
这实际上将不起作用,因为您不能在列名中加上引号。您实际上要做的是让SQL比较两个始终不同的字符串,这意味着您永远不会执行更新。
如果必须以这种方式进行 *** 作,则必须具有类似…的功能。
DECLARE @a INT DECLARE @b VARCHAR SET @a = 1WHILE @a < 30BEGINset @b = @a exec sp_executesql N'UPDATE source set h = h + 'x_'+@b + N'where y_'+@b + N' = ''Sold'''SET @a = @a + 1END
但总的来说,我不鼓励这种做法。我不喜欢在任何种生产代码的另一个SQL语句中生成动态SQL。对于执行一次性开发任务非常有用,但是我不喜欢它可能会被用户执行。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)