Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / выполнении транзакции в процедуре / 2 сообщений из 2, страница 1 из 1
14.01.2004, 15:42
    #32375910
AAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнении транзакции в процедуре
Столкнулся с такой проблемой при выполнении процедуры появляется какой то баг с запуском транзакции, а именно не выполняется оператор begin transaction, что характерно commit transaction исполняется. Вроде как понятно что проблема в совпадении слов begin у процедуры и транзакции, т.е. begin из begin transaction воспринимается как начало процедуры.
Вот хотелось бы узнать как этого можно избежать

вот такой пример:

ALTER procedure ue_trans
(In ue_nst text,
In ue_date text)
begin
begin transaction;/*ошибка*/
insert ul(nst,drg)
values (ue_nst,ue_date);
commit transaction;
end

Спасибо за внимание!
...
Рейтинг: 0 / 0
14.01.2004, 18:20
    #32376275
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнении транзакции в процедуре
Эх, когда же все приучаться писать имя и версию СУБД :)

По проблеме:
В ASA 2 диалекта - TSQL и WatcomSQL. Для TSQL есть команда явного старта транзакции BEGIN TRANSACTION, для WatcomSQL ее нет - любая команда изменения данных INSERT, UPDATE, DELETE неявно стартует транзакцию, если ее еще нет. Для обоих диалектов откат и сохранение транзакции должно быть явно выполнено с помощью операторов ROLLBACK и COMMIT. Так же для WatcomSQL есть возможность делать точки сохранения внутри транзакции, для возможности отката только нужной части транзакции 2 способами, явным, через :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
BEGIN
  SAVEPOINT <PointName>;
   -- operators
 
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK TO SAVEPOINT <PointName>;
    RESIGNAL;
END

или неявным, в виде атомарного блока:
Код: plaintext
1.
2.
3.
BEGIN ATOMIC
   -- operators
 
END
Причем оба вышепреведенных примера идентичны по способу работы.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / выполнении транзакции в процедуре / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]