CREATE PROCEDURE dbo.UpdateStuRegBySetField
@studentid varchar(50),
@field varchar(50),
@fieldvalue bit
 AS
exec('update stu_register 
set '+@field+'='+@fieldvalue+' where studentid='+@studentid)
GO

解决方案 »

  1.   

    字段名为变量,要使用动态SQL语句。CREATE PROCEDURE dbo.UpdateStuRegBySetField
    @studentid varchar(50),
    @field varchar(50),
    @fieldvalue bit
     AS
    EXEC('update stu_register set '+ @field + '=' +@fieldvalue + 'where studentid='+@studentid
    GO
      

  2.   

    改下,
    CREATE PROCEDURE dbo.UpdateStuRegBySetField
    @studentid varchar(50),
    @field varchar(50),
    @fieldvalue bit
     AS
    EXEC('update stu_register set '+ @field + '=' +@fieldvalue + 'where studentid='+@studentid)
    GO
      

  3.   

    paoluo(一天到晚游泳的鱼) 的代码
    提示:
    服务器: 消息 248,级别 16,状态 1,行 1
    varchar 值 '3321412323' 的转换溢出了 int 列。超出了最大整数值。
    语句已终止。
    这是怎么回事呢?
      

  4.   

    你执行的语句贴出来看看,执行的时候@studentid的值要加上''号。
      

  5.   

    晕,哪里是比较,是根据输入的参数来Update这个表stu_register 。