簡體   English   中英

將 SQL `raiserror` 與 C# 中的 `select` 組合

[英]Combining SQL `raiserror` with `select` in C#

我想知道是否有一種方法可以同時使用 SQL raiserror並在 C# 中檢索所選結果。 C# 中的ExecuteReader()raiserror發生時會拋出異常,但我仍然想使用 reader 來捕獲返回的任何數據。

下面是一個簡化的例子。 如果這不可能,我將在一般情況下使用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'

如果您將嚴重性降低到 10 或以下(從內存中),它不會引發異常,但可以通過 connection 上的InfoMessage 事件獲得 但是請注意,由於 TDS 的工作方式,您應該確保Read()等到所有結果的末尾 例如,如果您有多個select然后raiserror ,並且您在刪除數據閱讀器之前只閱讀了第一個select ,那么您有可能看不到該消息(TDS 將被殺死)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM