我想知道是否有一种方法可以同时使用SQL raiserror
并在C#中检索所选结果。当ExecuteReader()
发生时,C#中的raiserror
将抛出异常,但我仍然想使用阅读器捕获返回的任何数据。
以下是一个简化示例。如果无法做到这一点,我会针对一般情况使用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'
答案 0 :(得分:2)
如果将严重性降低到10或更低(从内存中),则不会引发异常,但可以通过InfoMessage
event on the connection使用。但请注意,由于TDS的工作原理,您应确保Read()
等 所有 的结束结果;例如,如果你有多个select
和然后一个raiserror
,而你只是在放弃数据阅读器之前阅读了第一个select
,那么你不会看到这个消息(TDS会被杀死)。