我想实现一个效果,我写了一个存储过程,我想传递三个数,一个是表名字,一个是字段名,一个是字段的值,
我想通过存储过程来修改表里边字段的值,
我写了一点存储过程,但是出错,希望大侠们指点下,小弟感激不尽
create Procedure up
@table varchar(50),
@zid varchar(50),
@value varchar(100)begin
exec('update'+@table+'set'+@zid=@value)
end

解决方案 »

  1.   

    create Procedure up 
    @table varchar(50), 
    @zid varchar(50), 
    @value varchar(100) begin 
    exec('update'+@table+' set ' + @zid + ' = ' + @value ) 
    end 
      

  2.   


    先print(@sql) 看一下拼接的SQL語句是否正確.
      

  3.   

    语法是没有错了,但是执行的时候出错
    create Procedure up 
    @table varchar(50), 
    @zid varchar(50), 
    @value varchar(100),
    @zhi varchar(50) 
    as
    begin 
    exec('update'+@table+' set ' + @zid + ' = ' + @value+'where'+@zid+'='+@zhi) 
    end 
    exec up car_inf,carid,6,1
      

  4.   

    --try
    create Procedure up 
    @table varchar(50), 
    @zid varchar(50), 
    @value varchar(100), 
    @zhi varchar(50) 
    as 
    begin 
    exec('update '+@table+' set ' + @zid + ' = ' + @value+' where '+@zid+'='+@zhi) 
    end 
    exec up car_inf,carid,6,1 
      

  5.   

    alter Procedure up 
    @table varchar(50), 
    @zid varchar(50), 
    @value varchar(100) 
    as
    declare @sql nvarchar(4000)
    set @sql=N'update '+@table+N' set '+@zid+N'='+quotename(@value,N'''')--字符型,如果不是QUOTENAME取消即可
    print @sql
    exec(@sql)
    go
      

  6.   

    是的,是空格的问题,我贴下成品的
    create Procedure up 
    @table varchar(50), --表名
    @zid varchar(50),  --字段
    @value varchar(100), --要更改的字段的值
    @zhi varchar(50)    --更改条件
    as
    begin
    exec('update ' +@table+ ' set ' +@zid+'='+@value+ ' where ' +@zid+'='+@zhi)
    end ,
    我结贴了谢谢大家