Главная страница
    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.034 c
1-1083352125
mr.Delphin
2004-04-30 23:08
2004.05.16
ФОКУС


3-1082626833
rserg
2004-04-22 13:40
2004.05.16
FibPlus и загрузка процессора при долгой работе программы


4-1080125371
WebErr
2004-03-24 13:49
2004.05.16
Почему у меня программа завершает свою работу не всегда...


1-1083245971
Шнур
2004-04-29 17:39
2004.05.16
Округление


1-1083311730
Ш-К
2004-04-30 11:55
2004.05.16
FreeAndNil





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский