Sql-Server
如果它有行,則僅從儲存過程返回記錄集
我有一個儲存過程,它返回多個記錄集以在應用程序中使用。有時其中一些記錄集是空的。
我想減少成本,只返回那些有 1 行或更多行的。
我的問題是 - 我怎樣才能只返回那些有行的記錄集?
應用程序只需要 0 個或多個記錄集,然後循環遍歷每個記錄集,然後將它們列印出來。
我知道我可以在應用程式碼中跳過它們,但我試圖阻止它們被返回,如果它們為空的話。
過程很簡單:
CREATE PROCEDURE bfsp_PROC_NM AS BEGIN SELECT * FROM TABLE_1 SELECT * FROM TABLE_2 SELECT * FROM TABLE_3 RETURN END GO
在實際過程中,有些查詢很昂貴,所以我不想測試查詢,如果它返回一行或更多,請再次執行……因為它太昂貴了。
我有一個儲存過程,它返回多個記錄集以在應用程序中使用。有時其中一些記錄集是空的。
我想減少成本,只返回那些有 1 行或更多行的。
這是一個可怕的想法。應用程序如何知道它正在處理什麼結果集?儲存過程應該有一組固定的結果集形狀。
話雖如此,為此將結果載入到臨時表中,然後從那些非空的表中選擇。
例如
CREATE PROCEDURE bfsp_PROC_NM AS BEGIN SELECT * into #result1 FROM TABLE_1 if @@rowcount > 0 select * from #result1 SELECT * into #result2 FROM TABLE_2 if @@rowcount > 0 select * from #result2 SELECT * into #result3 FROM TABLE_3 if @@rowcount > 0 select * from #result3 END GO