[英]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.