Как узнать, в какой строке хранимой процедуры произошла ошибка? - PullRequest
6 голосов
/ 29 октября 2008

Когда я пытаюсь запустить определенную хранимую процедуру в моей базе данных MS SQL 2005, я получаю сообщение об ошибке, подобное следующему:

Subquery returned more than 1 value. This is not permitted when
the subquery follows =, !=, <, <= , >, >= or when the subquery
is used as an expression

SP в запросе очень длинный и вызывает других SP. Эта ошибка, очевидно, создается самим SQL и возвращается полностью вверх по стеку вызовов, но без упоминания, какой SP или номер строки вызвал проблему. Как я могу узнать, откуда возникла ошибка, чтобы легче было ее отладить?

1 Ответ

5 голосов
/ 29 октября 2008

Использование блока Try / Catch должно дать вам то, что вы ищете.

В области действия блока CATCH для получения информации об ошибке, которая привела к выполнению блока CATCH, могут использоваться следующие системные функции:

* ERROR_NUMBER() returns the number of the error.
* ERROR_SEVERITY() returns the severity.
* ERROR_STATE() returns the error state number.
* ERROR_PROCEDURE() returns the name of the stored procedure or trigger where the error occurred.
* ERROR_LINE() returns the line number inside the routine that caused the error.
* ERROR_MESSAGE() returns the complete text of the error message. The text includes the values supplied for any substitutable parameters, such as lengths, object names, or times.

Итак, в вашем случае ERROR_LINE () и ERROR_PROCEDURE () должны быть такими, какие вы хотите ...

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