Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

try...except...end в T-SQL   Найти похожие ветки 

 
Wild_arg ©   (2004-04-20 09:36) [0]

Реально ли как-то отловить и обработать ошибки, возникшие при выполнении SQL-кода, в самой хранимой процедуре?


 
ЮЮ ©   (2004-04-20 09:40) [1]

if @@ERROR > 0


 
wild_arg ©   (2004-04-20 10:08) [2]

смысл такой:
в БД1 есть процедура, которая собирает некую информацию и вставляет ее в таблицы БД2. Даже хуже - БД1 и БД2 лежат на разных серваках.
Имеем примерно след. структуру хранимой процедуры:
1. сбор данных
2. вставка в БД2
3. подготовка результатов

На втором пункте может возникнуть ошибка - ну например второй сервер, на котором лежит БД2 запущен в монопольном режиме или еще что-то - т.е. инсерт не пройдет.
Хранимую процедуру я запускаю из дельфей и мне хотелось бы, чтобы ошибки пункта два можно было бы обработать в самой хранимой процедуре и не передавать ее в Дельфи


 
Ega23 ©   (2004-04-20 10:18) [3]

Books On-Line -> RAISERROR + See Also


 
wild_arg ©   (2004-04-20 10:29) [4]

:) ну ладно, чё вы.... хелпы только ламеры читают


 
Ega23 ©   (2004-04-20 10:39) [5]

Значит я "регулярный" ламер. Так как хелпы регулярно читаю. Чего и тебе советаю.


 
Delirium ©   (2004-04-20 10:48) [6]

"хелпы только ламеры читают" - ну раз ты не ламер, зачем тогда тут вопросы задаёшь? Отвечают у нас как раз те - кто читать умеет.


 
wild_arg ©   (2004-04-20 10:53) [7]

ну все поехали...
Да я тоже хелпы читаю. Но форум не для этого создан, чтобы советовать читать хелпы. Здесь, в принципе, на любой вопрос можно найти ответ в хелпе или еще где-нибудь, если основательно покопаться. Но форум создан как раз для обмена опытом и знаниями, для получения оперативной помощи, если хотите. Не знаете ответа - оставьте вопрос без Ваших комментариев.
Кста, на RAISERROR ничего нужного не нашел - он для генерации сообщения об ошибке, чтобы на клиенте отловить - мне же надо на серваке...
извините, коль что не так


 
Delirium ©   (2004-04-20 10:56) [8]

Ответ на твой вопрос в первом-же посте, остальное - попытки наставить тебя на путь истинный.


 
Ega23 ©   (2004-04-20 11:00) [9]

Кста, на RAISERROR ничего нужного не нашел - он для генерации сообщения об ошибке, чтобы на клиенте отловить - мне же надо на серваке...

Кста, ты можешь хп из другой хп на "серваке" вызывать.


 
jocko ©   (2004-04-20 13:08) [10]

Можно на удаленном сервере создать процедуру вставки и вызвать ее из текущей бд, например, EXEC @@VAR = SERVER.DBNAME.ProcedureName, при этом можно проверять что возвратила эта процедура (if @@ERROR > 0 RETURN 0 ELSE RETURN 1) соответственно сделать IF @@VAR <> 1 COMMIT ELSE ROLLBACK.
Но надо иметь в виду что if @@ERROR > 0 не всегда прокатывает (милые шалосити мелкомягких) и на ошибке может отвалиться пакет целиком. Лучше не полагаясь на советы проэксперементировать через QA.
А еще лучше попробовать пересмотреть алгоритм.


 
KSergey ©   (2004-04-20 14:02) [11]

Не, raiserror - это не то не путайте

2 Wild_arg

А чем [1] не нравится?? Это же полный ответ!



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
14-1083157053
Vvv
2004-04-28 16:57
2004.05.16
Сетевые приколы


1-1083258348
Черя
2004-04-29 21:05
2004.05.16
TrackBar и перехват л.к.м.


14-1083165726
PaRL
2004-04-28 19:22
2004.05.16
News


1-1083014147
hiperLogun
2004-04-27 01:15
2004.05.16
Низкоуровневый доступ к файлам


1-1083072150
Dimitriy
2004-04-27 17:22
2004.05.16
Memo