從 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 VARCHAR(75)', @city = @city</code>
直接執行不會將結果儲存在變數中。 若要擷取輸出,請修改程式碼如下:
<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 VARCHAR(75), @cnt INT OUTPUT', @city = @city, @cnt = @count OUTPUT SELECT @count</code>
這個改良的方法使用了以下關鍵元素:
@cnt
變數: 動態 SQL 將 COUNT(*)
結果指派給局部變數 @cnt
.OUTPUT
關鍵字: OUTPUT
關鍵字將 @cnt
指定為輸出參數。 sp_executesql
參數: sp_executesql
現在接收 @city
輸入參數和 @cnt
輸出參數。 SELECT @count
顯示捕獲的結果。 該變數現在保存動態查詢傳回的計數。 此方法提供了一種強大的方法來處理預存程序中動態 SQL 的結果,確保準確且有效率的資料檢索。
以上是如何將動態 SQL 查詢結果擷取到 SQL Server 中的預存程序變數中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!