在SQL#中结合SQL`raiserror`和`select`

时间:2011-07-21 09:00:08

标签: c# sql raiserror executereader

我想知道是否有一种方法可以同时使用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'

1 个答案:

答案 0 :(得分:2)

如果将严重性降低到10或更低(从内存中),则不会引发异常,但可以通过InfoMessage event on the connection使用。但请注意,由于TDS的工作原理,您应确保Read() 所有 结束结果;例如,如果你有多个select然后一个raiserror,而你只是在放弃数据阅读器之前阅读了第一个select,那么你不会看到这个消息(TDS会被杀死)。