2011-07-21 39 views
3

我想知道是否有一種方法可以同時使用SQL raiserror並在C#中檢索選定的結果。在C#中的ExecuteReader()會在發生raiserror時拋出異常,但我仍然希望使用讀取器捕獲返回的任何數據。在C#中將SQL`raiserror`與`select`結合起來#

下面是一個簡化的例子。如果這是不可能的,我將在一般情況下使用raiserror,在特定情況下使用select

if (some-error) 
begin 
    select @Message = 'ERROR: script made a booboo', 
      @State = 'State Info' 
    raiserror (@Messsage, 16, 1) 
    goto exit_sp 
end 

exit_sp: 
    select @Message 'Message', @State 'State' 

回答

2

如果降低的嚴重程度爲10或以下(從內存中),它不會引發異常,但將通過InfoMessageevent on the connection可用。然而請注意,由於TDS的工作原理,您應該確保您的Read()等等到結尾全部結果;例如,如果您有多個select s和,然後 a raiserror,並且您在丟棄數據讀取器之前只讀取第一個select,則有可能看不到該消息(TDS將被終止)。

+0

這可能有點過度殺死我的情況,但謝謝。 –

相關問題