Новые возможности языка SQL Firebird 3.0
75
FETCH NEXT FROM C;
RNAME = C.RDB$RELATION_NAME;
N = C.N;
SUSPEND;
-- перемещаемся на пятую запись (N=5)
FETCH ABSOLUTE 5
FROM C;
RNAME = C.RDB$RELATION_NAME;
N = C.N;
SUSPEND;
-- перемещаемся на 1 запись назад (N=4)
FETCH PRIOR FROM C;
RNAME = C.RDB$RELATION_NAME;
N = C.N;
SUSPEND;
-- перемещаемся на 3 записи вперѐд (N=7)
FETCH RELATIVE 3
FROM C;
RNAME = C.RDB$RELATION_NAME;
N = C.N;
SUSPEND;
-- перемещаемся на 5 записей назад (N=2)
FETCH RELATIVE -5
FROM C;
RNAME = C.RDB$RELATION_NAME;
N = C.N;
SUSPEND;
-- перемещаемся на первую запись (N=1)
FETCH FIRST FROM C;
RNAME = C.RDB$RELATION_NAME;
N = C.N;
SUSPEND;
-- перемещаемся на
последнюю
FETCH LAST FROM C;
RNAME = C.RDB$RELATION_NAME;
N = C.N;
SUSPEND;
CLOSE C;
END
Исключения с параметрами
Исключение теперь могут
быть определены с сообщением, содержащим
слоты для параметров, которые заполняются при возбуждении исключения.
Синтаксис:
EXCEPTION
USING (
);
:= [, [, …]]
Новые возможности языка SQL Firebird 3.0
76
Замечания:
Статус
вектор генерируется, используя комбинацию кодов isc_except,
number>, isc_formatted_exception,
, parameters>.
Поскольку используется новый код ошибки (isc_formatted_exception), клиент
должен быть версии 3.0 или по крайней мере использовать firebird.msg от версии
3.0 для того чтобы правильно преобразовать статус вектор в строку.
Параметры рассматриваются слева направо. Каждый параметр передаѐтся в
оператор возбуждающий исключение как N-ый, N начинается с 1:
Если N-ый параметр не передан, его слот не заменяется;
Если передано значение NULL, слот будет заменѐн на строку „***null***‟;
Если количество передаваемых параметров будет больше, чем содержится в
сообщении исключения, то лишние будут проигнорированы;
Общая длина сообщения, включая значения параметров, все еще ограничена
1053 байтами.
Примеры:
1.
Использование параметризованного исключения
Do'stlaringiz bilan baham: