這裏是沒有問題的運行原來的SQL語句:動態SQL將不執行
INSERT INTO @MasterTable (Col1 , Col2 , Col3 , Col4 , Col5 , Col6, Col7, Col8, Col9 )
EXEC Triage.Micro.DeptChanges @Client,@GroupCode, 0, @Ref1, @Ref2, @Ref3
當我試圖做同樣的事情使用動態SQL,它得到的錯誤。我不知道如何解決它。這裏是生成並運行動態的SQL代碼:
DECLARE @strSQL NVARCHAR(MAX), @strColumn VARCHAR(MAX), @strProc VARCHAR(MAX)
SELECT @strColumn = StoredProcName ,
@strProc = SPROC
FROM Triage..tblReports2FileName
WHERE ReportCode = 'R005';
SET @strSQL = N'INSERT INTO @MasterTable ' + @strColumn + N' EXEC ' + @strProc
EXEC sp_executesql @strSQL
下面是我收到的錯誤:
消息1087,級別15,狀態2,行26
必須聲明表變量「@MasterTable」。消息137,級別15,狀態2,行26
必須聲明標量變量「@Client」。
不是錯誤信息不言自明? –
必須在動態sql語句的範圍內聲明'@ MasterTable'。嘗試在'INSERT'之前聲明它。 –