0
下面的代碼分配值動態的變量列1至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
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 @[email protected] + 1
END
請提出一個想法,以去除的if..else如果部分..作爲單個sp_execute
sql來分配值。因爲我必須使用一個EXEC sp_executesql
將50個值分配給50個變量,而不是寫50個If..Else語句。
感謝您的更新。我試過這個查詢,但我得到了下面的錯誤。 [我是SQL服務器的新手]。其實我已經宣佈了這個變量。消息137,15級,狀態2,行2 必須聲明標量變量「@STMT_ASSIGN」。 – StackUser
這是因爲該變量超出了動態SQL中的範圍。你想在這裏做什麼?我在這裏或你原來的文章中沒有看到完整的sql語句。從我在這裏看到的,我不明白需要一個循環。 –
我找到了解決方案。謝謝你的迴應 – StackUser