sql server使用sp_executesql返回拼接字符串里面的輸出參數


問題:
  今天一同事請教博主,他拼接了一個語句,select表格形式數據,然后使用@@rowcount獲取到行數。
  但他又有這樣特別的需求:想只獲取行數而不返回表格數據結果,因為是while循環,不想返回那么多次表格到客戶端,而且后面又想復用這個返回表格形式數據的腳本字符串,不想在這個腳本字符串上改成count函數的拼接而影響后面復用腳本。
  試圖使用這個方法:把腳本在SQL Server Management Studio中打開,右擊【查詢選項】→【結果】→【網格】→勾選【執行后放棄結果】,結果確實是不返回table表格數據,但連要返回的那部分也都一並不返回了,連print都不顯示了,因此這個方法不能滿足這個特殊需求。

解決方案:
  經博主編寫demo腳本,使用sp_executesql返回拼接字符串里面的輸出參數這個知識點,問題得到了解決。博主把這個demo拿出來分享給大家。

腳本:

/*
    作者:zhang502219048
    腳本來源:https://www.cnblogs.com/zhang502219048/p/11317762.html
    說明:本腳本用於示例如何使用sp_executesql返回拼接字符串里面的輸出參數
*/
--@sql_table:源sql,返回表數據
declare @sql_table nvarchar(100) = '
    select 1 ID 
    union 
    select 3
'
--@sql_count:組裝count統計sql
declare @sql_count nvarchar(100) = '
select @iCount = count(*) 
from 
(' + @sql_table + ') a
'
--@iCount:返回輸出參數
declare @iCount int
exec sp_executesql @sql_count, N'@iCount int out', @iCount out --為了拼接返回參數,用sp_executesql
--顯示@iCount
print(@iCount)
--顯示原來腳本
print(@sql_table)
--顯示組裝count統計sql
print(@sql_count)

腳本運行結果:

作者聲明:
歡迎轉載,但轉載請務必注明博文來源:https://www.cnblogs.com/zhang502219048/p/11317762.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM