2011-11-28 24 views
0

如果第一個查詢返回一組記錄,然後不運行第二個查詢,那麼創建包含兩個查詢的存儲過程的語法如何?我猜測會有計數的一些測試,以便如果第一個查詢返回一個集合,第二個不會運行。包含兩個查詢的存儲過程(如果返回一個集合不運行另一個)

我想做到這一點:

  1. 運行查詢
  2. 測試結果從第一次查詢
  3. 設置如果算上等於零,然後運行第二個查詢

我總是喜歡加有沒有一種「正確」的方式來做到這一點,或者實際上「應該」構建這種類型的存儲過程,還是通常會皺眉?

感謝

回答

3

您可以使用@@ROWCOUNT檢查,看看影響與先前查詢的行數。

DoYourQuery() 
IF @@ROWCOUNT = 0 
BEGIN 
    YourAlternateQuery() 
END 

至於你的問題是你應該做的事情,我認爲這將是個案。這與將控制流程邏輯放入其他任何程序內部類似,有時IF語句是實現您的目標的正確工具,但它們不應用於任何情況。

+0

這是我正在運行兩個查詢和測試通過c#代碼哪些記錄集使用的情況之一,我想知道如果我可以通過將查詢和代碼組合到一個存儲過程中減輕負載,這似乎回答我的問題很好 - 感謝亞當。 – flavour404

+0

@ flavour404減少對SQL的調用很不錯,因爲它減少了必須進行的網絡往返次數。你必須權衡SQL對你所做的額外處理,但在這種情況下,額外的處理似乎是非常小的。 –

相關問題