Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ado - хРАНИМЫЕ пРОЦЕДУРЫ - вОЗВРАТ оШИБОК

270
11 января 2004 года
Drew
265 / / 20.07.2000
MS SQL сервер.
Программа для помещения данных в таблицу программа на C Builder зовёт хранимую процедуру. (sp->ExecSql();)
Хранимая процедура выполняет вставку данных в таблицу и ДОЛЖНА возвращать значение (@Err int OUTPUT)
Для таблицы на вставку и обновление есть триггер. Триггер ДОЛЖЕН возвращать ошибку по RAISERROR(50001,18,1) with seterror в переменной @@ERROR.
а затем эту ошибку (если её сгенерировал триггер)надо вернуть в программу.

1. Триггер ГЕНЕРИРУЕТ ошибку, но почему-то ошибка не передаётся в хранимую процедуру
2. хранимая процедура после исполнения команды INSERT INTO (которая собственно и запускает триггер) не выполняет НИ ОДНОЙ команды (типа SET @Err=@@ERROR и SELECT @Err) такое впечатление, что после исполнения триггера ВСЯ программа хранимой поцедуры завершает свою работу...
3. ну и соответственно, если после INSERT INTO не исполняется SET @Err=@@ERROR, то и @Err int OUTPUT не возвращает ничего...

КАК ОШИБКУ, СГЕНЕРИРОВАННУЮ ТРИГГЕРОМ, ВЕРНУТЬ В ПРОГРАММУ
348
12 января 2004 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by Drew

КАК ОШИБКУ, СГЕНЕРИРОВАННУЮ ТРИГГЕРОМ, ВЕРНУТЬ В ПРОГРАММУ


Попробуй в процедуре до того как сработает триггер установить @Err к примеру в 1, а после выпролнения триггера выставить @Err например в 0. Таким образом если @Err=0 тогда ошибки нет, иначе ошибка. Хотя если мне не изменяет память, то хранимая процедура выполняется в одну транзакцию, следовательно если что-то не сработало тогда вся транзакция откатывается.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог