Передача исключений выше в программу

185
30 марта 2017, 22:57

Добрый день!
Используется связка php+mssql.
В базе есть процедура с блоком try catch

Begin try
...
Throw 50000, 'test throw', 1
...
End try
Begin catch
  Select error_message();
Throw;
End catch

При прогоне в мсстудио все корректно: транзакции прекращаются, выводится текст ошибки.
При прогоне в php тоже транзакции прекращаются, но не генерируется исключение и я не могу определить завершилась ли процедура корректно или с исключением. Как исправить или как отлавливать?

Answer 1

Исключения в БД MSSQL и исключения в PHP - это две абсолютно разные сущности, не связанные друг с другом никак от слова совсем.

Для обработки ошибок возникших в БД используйте функции обработки ошибок используемого вами драйвера. Если это, например, PDO, то PDOStatement::errorInfo, если SQLSRV, то sqlsrv_errors

Для того, чтобы MSSQL вернул ошибку в драйвер, используемый PHP, в блоке catch вместо Throw; используйте RAISEERROR(...)

READ ALSO
Проблема с ответом cURL

Проблема с ответом cURL

Приветствую, коллеги

238
Поиск файла по шаблону в заданой директории php

Поиск файла по шаблону в заданой директории php

Есть директория, в ней просто громаднейшее кол-во файлов [странные люди] и дир-а постоянно пополняется

195