SQL Server:在變數中擷取動態 SQL 查詢結果
預存程序通常使用動態 SQL,動態建構查詢。 關鍵的挑戰是在過程本身中檢索這些動態查詢的結果。
考慮這個場景:
<code class="language-sql">DECLARE @sqlCommand nvarchar(1000) DECLARE @city varchar(75) SET @city = 'London' SET @sqlCommand = 'SELECT COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75)', @city = @city</code>
此程式碼片段動態產生 COUNT(*)
查詢,但不捕捉結果。 為了解決這個問題,我們需要一個修改方法:
<code class="language-sql">DECLARE @sqlCommand NVARCHAR(1000) DECLARE @count INT DECLARE @city VARCHAR(75) SET @city = 'New York' SET @sqlCommand = 'SELECT @cnt=COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75), @cnt int OUTPUT', @city = @city, @cnt = @count OUTPUT SELECT @count</code>
詳細解釋如下:
宣告結果變數:我們將 @cnt
宣告為 INT
來儲存查詢的輸出。
修改動態 SQL: 調整 SELECT
語句,將 COUNT(*)
結果指派給 @cnt
:SELECT @cnt=COUNT(*)
.
將 sp_executesql
與 OUTPUT 一起使用: sp_executesql
與 OUTPUT
參數一起使用,以指定 @cnt
將接收來自查詢的值。 注意參數聲明@cnt int OUTPUT
.
檢索結果:執行後,@cnt
包含計數。 SELECT @count
顯示儲存的值。
這種改進的方法可以有效地將動態 SQL 結果捕獲到變數中,從而能夠在預存過程中進行進一步處理或傳回。
以上是如何將動態 SQL 查詢結果擷取到 SQL Server 中的變數中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!