С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2013, 09:17
Ответы с готовыми решениями:

Как сделать меню вызова различных хранимых процедур?
Уже 3-ю неделю мучаюсь не могу вызвать хранимую процедуру из хранимой процедуры. Как возможно сделать такое?

Вызов хранимых процедур
Здравствуйте, подскажите пожалуйста, как мне правильно сделать: есть форма, на форме расположены элементы, dataGridView, TextBox и button,...

Параметры хранимых процедур
При написании хранимой процедуры столкнулся с такой проблемой: нужно параметром хранимой процедуры передвать название таблицы, создаваемой...

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2013, 10:22
Помогаю со студенческими работами здесь

Отладка хранимых процедур
Привет всем! Сабж. Заранее благодарен.

Декорирование хранимых процедур
есть ли возможность навесить метаинформацию на хранимую процедуру, выполняя create procedure, по типу аттрибутов .net?

Генерация хранимых процедур
Я пишу программу для генерации хранимых процедур (ХП). Хочу узнать на сколько данная программа интересна другим программистом. Основная...

Создание хранимых процедур
Здравствуйте! Возник следующий вопрос. Возможно ли написание собственных хранимых процедур в какой либо среде для создания Баз Данных....

Перенос хранимых процедур
Всем добрый день! Продолжаю изучать SQL после скоропостижного ухода DBA методом "жить хочешь - научишься плавать". ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru