問題: 今天一同事請教博主,他拼接了一個語句,select表格形式數據,然後使用@@rowcount獲取到行數。 但他又有這樣特別的需求:想只獲取行數而不返回表格數據結果,因為是while迴圈,不想返回那麼多次表格到客戶端,而且後面又想復用這個返回表格形式數據的腳本字元串,不想在這個腳本字元串上改成 ...
問題:
今天一同事請教博主,他拼接了一個語句,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