存储过程:update tabelA set @f = '11' wehre Id = 1 如果用一个变量代替一个地段名?

558047 2006-10-31 10:33:14
我想要实现的是
update tabelA set f1 = '11' wehre Id = 1
现在是循环的进行更新,还有f2,f3.....直到f31
我想用一个变量来代替f1....f31,就是update tabelA set @f = '11' wehre Id = 1
@f可以不同的更新
...全文
159 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
558047 2006-10-31
  • 打赏
  • 举报
回复
经测试,是因为不用exce引起的
不明白,为什么不用exec就出错呢?
558047 2006-10-31
  • 打赏
  • 举报
回复
YiZhiNet(九斤半)的没有问题
558047 2006-10-31
  • 打赏
  • 举报
回复
不行啊。
update tabelA set '+@f+' =''11'' where Id = 1
没用exec,应该不是这个原因吧
提示:'+@f+' 附近有语法错误。
九斤半 2006-10-31
  • 打赏
  • 举报
回复
这样?

DECLARE @I INT,@FIELD NVARCHAR(10)
SET @I=1
WHILE @I<=31
BEGIN
SET @FIELD='F'+CAST(@I AS NVARCHAR(10))
--PRINT('UPDATE TABLEA SET ' + @FIELD + '=''11'' WHERE ID=1')
EXEC('UPDATE TABLEA SET ' + @FIELD + '=''11'' WHERE ID=1')
SET @I=@I+1
END
pengda1i 2006-10-31
  • 打赏
  • 举报
回复
declare @sql varchar(300)

declare @i int
set @i=1
while @i<=31
begin
set @sql='update tabelA set f'+cast(@i as varchar)+' = ''11'' wehre Id = 1'
exec(@sql)
set @i=@i+1
end

pengda1i 2006-10-31
  • 打赏
  • 举报
回复
declare @sql varchar(300)

declare @i int
set @i=1
while @i<=31
begin
set @sql='update tabelA set @f'+cast(@i as varchar)+' = ''11'' wehre Id = 1'
exec(@sql)
set @i=@i+1
end

dulei115 2006-10-31
  • 打赏
  • 举报
回复
exec('update tabelA set ' + @f + ' = ''11'' wehre Id = 1')
子陌红尘 2006-10-31
  • 打赏
  • 举报
回复
exec('update tabelA set '+@f+' =''11'' where Id = 1')

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧