2.
Расширения SQL.Транзакции. Вместо
begin transaction следует всегда использовать tbegin. Потом можно будет легко перевести систему на distributed transactiontbegin=begin transaction
tcommit=commit transaction
trollback=rollback transaction
loop.
Бесконечный цикл. Используетсяloop оператор1...операторn end
FORALL...ENDFOR.
Два макроса реализуют цикл по записям с помощью курсора. Использование:FORALL{имя_курсора; список_into; select_оператор}
ENDFOR{имя_курсора; список_into}
Первые два параметра у
FORALL и ENDFOR должны совпадать. При аварийном выходе из цикла надо не забыть сделать deallocate. Напримерdecalre @i int, @b varchar(128)
FORALL{{Cu}, {@i,@b}, {select x,y from Z where k='23'})
..... тело цикла
ENDFOR({Cu}, {@i,@b})
rollerror.
Используется при выходе по ошибке, когда надо завершить транзакцию по rollback.Но чтобы не было предупреждения о счетчиках транзакций процедур, то на всех уровнях вложенности, кроме последнего, делается
commit, а на последнем rollback. После вызова этого макроса следует выходить с помощью return 1 - по статусу определяется неуспешное завершение функцииrerror({строка_сообщения}) – выдает с помощью raiseerror сообщение об ошибке
rerrorp({строка_сообщения
},{параметры}) – то же, но с параметрами например:rerror({'Not found'})
rerrorp({'Not found %d in %s'}, {@a, @b})