高手请进,解决一个动态更新表的存储过程的问题?
各位:这个问题时这样的,我在一个存储过程中,应用了这样的一条语句,但是提示说不能将类型进行隐士转换,请看例子:
@name varchar(50) --表示表rrr中一个字段的名字
@value int --表示这个字段的更新值
update rrr set @name=@vslue where 条件
为什么不对呢?请各位分析一下,各一个解决的方案,或例子。
小弟非常感谢!谢谢!!!!!!
问题点数:0、回复次数:9Top
1 楼sky_blue(蓝天2007)回复于 2002-12-02 21:19:46 得分 0
exec('update rrr set '+@name+'='+ covert(varchar(20),@vslue)+ ' where 条件')Top
2 楼y_zhi_yong(小兵)回复于 2002-12-02 21:24:45 得分 0
在update等语句中不能直接使用变量,如上,先连成一个字符串然后用exec string来执行.Top
3 楼ok1(wei)回复于 2002-12-02 21:26:16 得分 0
declare @a varchar(30),@b int
select @a='444'
select cast(@a as int)
select @b=@a
print @b
Top
4 楼pengdali()回复于 2002-12-02 21:37:15 得分 0
exec ('update rrr set '+@name+'='+@vslue+' where '+条件)Top
5 楼older(井底蛙同样可以向往大海)回复于 2002-12-02 23:17:01 得分 0
exec ('update rrr set '+@name+'="'+@vslue+'" where '+条件)
Top
6 楼older(井底蛙同样可以向往大海)回复于 2002-12-02 23:19:49 得分 0
应为:
exec ('update rrr set '+@name+'='+cast(@vslue as string)+' where '+条件)Top
7 楼tantengfei(苦口苦乐)回复于 2002-12-03 09:27:59 得分 0
用exec 的回答都是正确的方向.因为用update ,@name 不会转成字段名称的。Top
8 楼zzhuz(大件)回复于 2002-12-03 09:34:32 得分 0
先把命令连成字符串,再用exec执行命令Top
9 楼tfxg()回复于 2002-12-05 09:06:39 得分 0
exec ('update rrr set '+@name+'='+@vslue+' where '+条件)
Top




