|
ловля exceptions в хранимых процедурах
|
|||
---|---|---|---|
#18+
Привет. Создаю 2 хранимые процедуры. Одна вызывает другую. В обоих генерятся ошибки (с помощью raiserror). Вопрос. Почему когда я использую ExecuteReader() (для датаредер) для выполнения моих вложенных процедур, то в коллекции ошибок накапливается только одна ошибка. (самая первая). Если использовать ExecuteNonQuery - все прекрасно. ДВЕ ошибки. Кто-нибудь с этим сталкивался? Как мне вернуть обе ошибки, используя ExecuteReader()? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2004, 14:52 |
|
ловля exceptions в хранимых процедурах
|
|||
---|---|---|---|
#18+
Привет! Дело в том, что ExecuteNonQuery() вызывает internal функцию у SqlCommand, которая выглядит так: Execute.Reader(CommandBehavior, RunBehavior). Этот runBehavior недоступен снаружи. Когда ты вызываешь ExecuteNonQuery(), вызов идет такой: ExecuteReader(CommandBehavior.Default, RunBehavior.UntilDone), то есть по-любому батч выполнится до конца, а когда ты вызываешь ExecuteReader(), вызво выглядит так: ExecuteReader(CommandBehavior /*нам его могут передать в качестве параметра, по умолчанию Default*/, RunBehavior.ReturnImmediately), то есть выход осуществится при первой же ошибке в батче. RunBehavior также есть internal, так что изменить что-то мне возможным не представляется :( ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2004, 16:44 |
|
|
start [/forum/topic.php?desktop=1&fid=17&tid=1354033]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 133ms |
0 / 0 |