Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как определить из-за чего произошла ошибка в хранимой процедуре в SQL ?
|
|||
|---|---|---|---|
|
#18+
Есть хранимая процедура в SQL Server, которая что-то делает, но может получиться так что из-за какой-нибудь ошибки она не сделает то что надо. Ну папример хр. процедура добавляет запись, но ввиду того что дублируется уникальное значение, запись не добавится и вернется ошибка. Но мне надо пользователю вывести не просто сообщение, а что ошибка произошла из-за дублирующегося значения в поле "Х", а может быть и поле "Y". Можно конечно перед проверкой все проверять, но на фига, если сервер и так все проверет. Одним словом как мне опредеить тип и причину ошибки и в зависимости от этого вывести нормальное сообщение? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 07:29 |
|
||
|
Как определить из-за чего произошла ошибка в хранимой процедуре в SQL ?
|
|||
|---|---|---|---|
|
#18+
Student2007: Есть хранимая процедура в SQL Server, которая что-то делает, но может получиться так что из-за какой-нибудь ошибки она не сделает то что надо. Ну папример хр. процедура добавляет запись, но ввиду того что дублируется уникальное значение, запись не добавится и вернется ошибка. Но мне надо пользователю вывести не просто сообщение, а что ошибка произошла из-за дублирующегося значения в поле "Х", а может быть и поле "Y". Можно конечно перед проверкой все проверять, но на фига, если сервер и так все проверет. Одним словом как мне опредеить тип и причину ошибки и в зависимости от этого вывести нормальное сообщение? Спасибо private static void DisplaySqlErrors(SqlException exception) { for (int i = 0; i { Console.WriteLine("Index #" + i + "\n Error: " + exception.Errors[i].ToString() ); } Console.ReadLine(); }---------------------------------------- Knowledge is P...O...w...E...R! My site ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 13:40 |
|
||
|
Как определить из-за чего произошла ошибка в хранимой процедуре в SQL ?
|
|||
|---|---|---|---|
|
#18+
Т.е. хотите сказать, что класс SQLException содержит всю необходимую мне информацию? Счас посмотрю Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 14:44 |
|
||
|
Как определить из-за чего произошла ошибка в хранимой процедуре в SQL ?
|
|||
|---|---|---|---|
|
#18+
Есть еще вариант. SQLExeption не обработает (и тем более не отменит) сбой в ХП при вставке данных. Надежнее всего выполнять операции в ХП (если речь идет о запросах типа update,insert) внутри транзакции (begin tran - rollback tran - commit tran) c проверкой ошибок. Тогда если в одну таблицу данные вставятся, а в другую нет - то произойдет откат всей транзакции (т.е. отменяются все выполненные перед ошибкой запросы). В результате не будет сиротских строк. И при этом нужно проверять после выполнения процедуры значение параметра ХП типа ReturnValue. Если его значение = 0 - значит транзакция выполнена успешно. Если <> 0 - произошел откат транзакции из-за ошибки. Причем значение может четко "объяснить" - какая была ошибка. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 17:05 |
|
||
|
|

start [/forum/topic.php?fid=18&tid=1387734]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 401ms |

| 0 / 0 |
