3

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

1 回答 1

2

如果您将严重性降低到 10 或以下(从内存中),它不会引发异常,但可以通过InfoMessage connection 上的事件获得。但是请注意,由于 TDS 的工作方式,您应该确保Read()等到所有结果结束;例如,如果您有多个s然后是 a ,并且您在删除数据阅读器之前只阅读了第一个,那么您有可能看不到该消息(TDS 将被杀死)。selectraiserrorselect

于 2011-07-21T09:06:04.710 回答