|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
|
Как вы организовываете возврат ошибок из хранимых процедур?01.04.2013, 09:17. Показов 3220. Ответов 4
Метки нет (Все метки)
Интересен следующий момент - как бы лучше давать знать о том, что какая-то хранимка завершилась с ошибкой? например, я из кода на C# хочу произвести добавление в таблицу А, в которой есть 2 ограничения уникальности, если я отправлю просто команду на sql server на подобие "insert into...", то там может вылететь эксепшн, что вот мол ограничение целостности нарушено, НО юзеру же не покажешь такую ошибку и в то же время по ней не определишь же какое именно ограничение было нарушено(нет, конечно можно определить, НО я же не буду сотни проверок ради этого ставить типа если это ограничение с названием таким, то показать сообщение об ошибке такое и т.д.)
В то же время, хранимка может вернуть только число, да я могу скажем возвращать код ошибки, типа если меньше 0, то ошибка и допустим выдирать из какой-то таблицы самописной где будут перечислены коды ошибки и сообщения об ошибках, но опять таки, делать еще один запрос ради этого, ну не знаю, или нормальный вариант? Еще как вариант можно же прям внутри хранимки делать RAISERROR а на клиенте просто ловить эксешпн и выкидывать юзеру сообщение эсепшена, а в хранимке например будут эксепшены с сообщениями на подобие "Категория с таким именем уже существует". Или же это не очень удачное решение? Хотел делать это через функции, тогда бы мог сретурнить VARCHAR с сообщением, но как оказалось, в функции нельзя вызывать инсерты и прочее в общем ваше мнение?)
0
|
|
| 01.04.2013, 09:17 | |
|
Ответы с готовыми решениями:
4
Вызов хранимых процедур
|
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|
| 01.04.2013, 09:59 | |
|
как вариант - на C#: try{ ... } catch(SqlException se){MessageBox.Show(se.Message);}
1
|
|
|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
|
| 01.04.2013, 10:05 [ТС] | |
|
Ну я и говорю об этом, нормальный ли вариант из хранимки делать RAISERROR ? или все-таки лучше возвращать из нее код ошибки, например -1, при отрицательном коде лезть в какую-нибудь таблицу, где будет лежать само сообщение?
Просто если попытаться добавить запись и срабатывает ограничение, то он же тоже генерит эксепшн, и судя по всему он не критический, я вот думаю может тоже не париться, а просто делать RAISERROR и присвоить ему например 12й уровень какой-нибудь)
0
|
|
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|
| 01.04.2013, 10:10 | |
|
если отлавливать по коду возврата, то неожиданное исключение приведет к сбою в работе программы; а раз все равно есть try-catch - то на выбор, оба варианта хороши... можно и совместить, но про эффективность обработки в момент выдачи диагностического сообщения пользователю - вряд ли стоит задумываться... Все равно, покааа до него дойдет, что надо текст ошибки прочитать :-)))
1
|
|
|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
|
| 01.04.2013, 10:22 [ТС] | |
|
Ну ладно, думаю тогда пока на это варианте и остановлюсь, а там уж по ходу дела будет понятно, есть ли смысл использовать другие пути или нет, спасибо)
0
|
|
| 01.04.2013, 10:22 | |
|
Помогаю со студенческими работами здесь
5
Отладка хранимых процедур
Генерация хранимых процедур Создание хранимых процедур Перенос хранимых процедур Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|