本文介紹了SQL Server Dynamic SQL-從表列表中獲取輸出的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正試圖遍歷一個包含表名列表的TEMP表變量。我想簡單地計算每個表中DateTracked列大于30天的行數。我在動態更改from@tblName變量以存儲記錄計數,然后將其插入到我的跟蹤表中時遇到了問題。最后,我將使用游標遍歷每個表,但我只想首先為單個表記錄這一邏輯。以下是我的測試代碼:
DECLARE @tblName as NVARCHAR(MAX)
DECLARE @q as NVARCHAR(MAX)
SET @q = 'Select Count(DateTracked) FROM Audit.' + @tblName + ' WHERE DateTracked > DATEADD(dd, -30, CAST(GETDATE() as date))'
--DECLARE @tblNameTable TABLE
--(
-- tableName NVARCHAR(MAX)
--)
--INSERT INTO @tblNameTable VALUES (N'myTestTable')
DECLARE @ExpectedRecordsToMove AS TABLE (col1 int)
INSERT INTO @ExpectedRecordsToMove EXECUTE sp_executesql @q, N'@tblName nvarchar(500)', @tblName = 'myTestTable'
SELECT * FROM @ExpectedRecordsToMove
推薦答案
找到解決方案。
DECLARE @tblName as NVARCHAR(MAX) = 'tblAutoDispatch_DispatchStatus_Map_Tracking'
DECLARE @q as NVARCHAR(MAX) = 'SELECT Count(DateTracked) FROM Audit.' + @tblName + ' WHERE DateTracked > DATEADD(dd, -30, CAST(GETDATE() as date))'
DECLARE @ExpectedRecordsToMove TABLE
(
ExpectedRecordsToMove Int
)
INSERT INTO @ExpectedRecordsToMove
EXECUTE sp_executesql @q
SELECT * FROM @ExpectedRecordsToMove
注意:由OP對問題提供答案。
這篇關于SQL Server Dynamic SQL-從表列表中獲取輸出的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,