CREATE procedure t_update           -- 通用更新存储过程
(
@TableName   [varchar](50),         -- 表名
@strSet      [varchar](200) ,       -- 更新语句,不要加set
@strWhere    [varchar](200) = ''    -- 更新条件 (注意: 不要加 where)
)
as
declare @tiaojian [varchar](300)
declare @sql      [varchar](300)if @strWhere=''   --构造条件语句
  begin
    set @tiaojian=''
  end 
else
  begin
    set @tiaojian=' where '+@strWhere
  endset @sql='update ['+@TableName+'] set '+@strSet+@tiaojian
exec(@sql)在一个投票应用中用到该过程,如果列名用变量的话,必定报错“某某列不存在”。
如果列名不用变量就不会报错,但是又增加很多繁琐的代码。
C#代码:
//写一个投票方法,用来处理投票
protected void toupiao(string column, int jifen) //前参数为投票项对应的列,后参数为对应的积分
{
        SqlConnection conn = new SqlConnection(connStr);
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "t_update";
        cmd.Parameters.Add(new SqlParameter("@TableName", MyTable));
        cmd.Parameters.Add(new SqlParameter("@strSet", "['"+column+"']=['"+column+"']+'"+jifen+"'"));
        cmd.Parameters.Add(new SqlParameter("@strWhere", "[id]='"+id+"'"));
        conn.Open();
        int count = cmd.ExecuteNonQuery();
        conn.Close();
        conn.Dispose();
        if(count>0)
        {
          //输出投票成功提示
        }
}
请大侠们帮我改一下这个存储过程,让列名能够使用变量,谢谢!