Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.031 c
14-1082953559
Warrior
2004-04-26 08:25
2004.05.16
WinAPI контролы


14-1082974344
Chainik
2004-04-26 14:12
2004.05.16
Отключение планировщика заданий


4-1080639896
DennisLNC
2004-03-30 13:44
2004.05.16
Перерисовка


1-1083222874
ПрогерШ
2004-04-29 11:14
2004.05.16
Как реализовать инитерфес в стиле IBExpert?


3-1082221283
CyBeR
2004-04-17 21:01
2004.05.16
Как создать список просмотра DbGrid????





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский