【发布时间】:2014-10-04 11:42:40
【问题描述】:
我想做下面的程序
declare @a as varchar(10)
set @a= '1'
declare @sql as varchar(1000)
--select @sql ='select convert(float,'+@a+')+1'
declare @b as varchar(20)
set @b = '5'
select @sql= 'while ('+@a+'<=4)
begin
select ['+@a+'] from #Seg1PD_TruncadaFinal where truncada ='+@a+'
set '+@a+'='+@a+'+1
end'
exec(@sql)
我有一个 6x5 的表,其中 5 个列名是 1,2,3,4,5,另一个是“Truncada”,有 5 行:1,2,3,4,5。例如,我想选择第 1 列和第 1 行,然后选择其他组合,所以我尝试了。问题在于当我想更改@a 的值时,可能是因为它是一个varchar,但这不是当时条件的问题。
对不起,我不是很清楚,这是我收到的错误:
Msg 102, Level 15, State 1, Line 1574 Incorrect syntax near '1'.
但是,当我在没有 de set '+@a+'='+@a+'+1 的情况下编写代码时,它可以在无限循环中运行(因为它永远不会完成)。所以我认为问题出在集合中。
【问题讨论】:
-
你的问题是什么?您是否收到错误消息,是否收到您不期望的结果,您的计算机是否起火...
-
作为调试动态 SQL 的一般提示,在
exec之前放置一个测试print,例如print @sql
标签: sql sql-server-2008 loops dynamic dynamic-columns