Sql server 以动态方式为变量赋值
下面的代码动态地为变量Column1到Column5赋值Sql server 以动态方式为变量赋值,sql-server,Sql Server,下面的代码动态地为变量Column1到Column5赋值 DECLARE @Column1 INT=0, @Column2 INT=0, @Column3 INT=0, @Column4 INT=0, @Column5 INT=0, @I INT=0, @STMT_ASSIGN NVARCHAR(100) SET @I = 1 WHILE ( @I <= 5 ) BEGIN
DECLARE @Column1 INT=0,
@Column2 INT=0,
@Column3 INT=0,
@Column4 INT=0,
@Column5 INT=0,
@I INT=0,
@STMT_ASSIGN NVARCHAR(100)
SET @I = 1
WHILE ( @I <= 5 )
BEGIN
SET @STMT_ASSIGN='SET @Column' + CONVERT(VARCHAR(2), @I) + '='
+ CONVERT(VARCHAR(2), @I)
IF @I = 1
EXEC Sp_executesql
@STMT_ASSIGN,
N'@Column1 INT output',
@Column1 = @Column1 output
ELSE IF @I = 2
EXEC Sp_executesql
@STMT_ASSIGN,
N'@Column2 INT output',
@Column2 = @Column2 output
ELSE IF @I = 3
EXEC Sp_executesql
@STMT_ASSIGN,
N'@Column3 INT output',
@Column3 = @Column3 output
ELSE IF @I = 4
EXEC Sp_executesql
@STMT_ASSIGN,
N'@Column4 INT output',
@Column4 = @Column4 output
ELSE
EXEC Sp_executesql
@STMT_ASSIGN,
N'@Column5 INT output',
@Column5 = @Column5 output
SET @I=@I + 1
END
请建议删除if..else if。。部分以使其成为单个sp_,执行sql以分配值。因为我必须使用一个EXEC sp_executesql为50个变量分配50个值,而不是编写50个If..Else语句。尝试以下查询:
DECLARE @Column1 INT=0,
@Column2 INT=0,
@Column3 INT=0,
@Column4 INT=0,
@Column5 INT=0,
@I INT=0,
@STMT_ASSIGN NVARCHAR(100),
@command NVARCHAR(1000)
SET @I = 1
WHILE ( @I <= 5 )
BEGIN
SET @STMT_ASSIGN='SET @Column' + CONVERT(VARCHAR(2), @I) + '='
+ CONVERT(VARCHAR(2), @I)
SET @command = 'EXEC Sp_executesql
@STMT_ASSIGN,
N''@Column'+CAST(I AS NVARCHAR(1))+' INT output'',
@Column'+CAST(I AS NVARCHAR(1))+' = @Column'+CAST(I AS NVARCHAR(1))+' output'
EXEC(@command)
SET @I=@I + 1
END
谢谢你的更新。我尝试了这个查询,但是我得到了下面的错误。[我是SQL server新手]。实际上我已经声明了那个变量。Msg 137,级别15,状态2,第2行必须声明标量变量@STMT_ASSIGN。这是因为该变量在动态sql中超出范围。你想在这里干什么?我在这里或您的原始帖子中没有看到完整的sql语句。从我在这里看到的,我根本不理解循环的必要性。我找到了解决方案。谢谢你的友好回复