Объединение SQL `raiserror` с` select` в C # - PullRequest
3 голосов
/ 21 июля 2011

Я хочу знать, есть ли способ использовать как 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 Ответ

2 голосов
/ 21 июля 2011

Если вы снизите уровень серьезности до 10 или ниже (из памяти), это не вызовет исключения, но будет доступно через событие InfoMessage в соединении .Однако обратите внимание, что из-за того, как работает TDS, вы должны убедиться, что вы Read() и т. Д. До end из all результатов;например, если у вас есть несколько select s и , то a raiserror, и вы только прочитали первую select перед сбросом устройства чтения данных, есть вероятность, что вы не увидитесообщение (TDS будет убит).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...