Руководство по языку sql
SET TERM ^; -- -- Подпроцедуры в EXECUTE BLOCK -- execute block returns
Download 1.22 Mb. Pdf ko'rish
|
Firebird3 SQL features
- Bu sahifa navigatsiya:
- RETURN
SET TERM ^;
-- -- Подпроцедуры в EXECUTE BLOCK -- execute block returns (name varchar(31)) as declare procedure get_tables returns (table_name varchar(31)) as begin for select rdb$relation_name from rdb$relations where rdb$view_blr is null into table_name do Новые возможности языка SQL Firebird 3.0 68 suspend; end declare procedure get_views returns (view_name varchar(31)) as begin for select rdb$relation_name from rdb$relations where rdb$view_blr is not null into view_name do suspend; end begin for select table_name from get_tables union all select view_name from get_views into name do suspend; end^ -- -- Подфункция внутри хранимой функции -- CREATE OR ALTER FUNCTION FUNC1 (n1 INTEGER, n2 INTEGER) RETURNS INTEGER AS DECLARE FUNCTION SUBFUNC (n1 INTEGER, n2 INTEGER) RETURNS INTEGER AS BEGIN RETURN n1 + n2; END BEGIN RETURN SUBFUNC(n1, n2); END ^ -- select func1(5, 6) from rdb$database ^ Расширение использования префикса двоеточия До сих пор префикс двоеточие (:) использовался в PSQL, чтобы пометить ссылку на переменную в DML операторе. Его использование было расширено в Firebird 3 для двух независимых целей: Новые возможности языка SQL Firebird 3.0 69 1. Позволить OLD/NEW полям в курсорах быть прочитанными и присваивать их переменным. 2. Сделать присвоение переменной в DML и PSQL операторах в модулях и блоках более гибким, и при необходимости разрешать неоднозначность между именами полей и именами переменных. Теперь подобный синтаксис не вызывает ошибки. create trigger t1 before insert on t1 as declare v integer; begin :v = :old.n; :new.n = :v; end Ссылки на PSQL курсоры как на переменные Теперь в PSQL поддерживаются ссылки на курсоры, как на переменные типа запись. Текущая запись доступна через имя курсора для явных (DECLARE AS CURSOR ) и неявных (FOR SELECT) PSQL курсоров, что делает необязательным предложение INTO. Правила: 1. Для разрешения неоднозначности при доступе к переменной курсора перед именем курсора необходим префикс двоеточие. 2. К переменной курсора можно получить доступ без префикса двоеточия, но в этом случае, в зависимости от области видимости контекстов, существующих в запросе, имя может разрешиться как контекст запроса вместо курсора. 3. Переменные курсора доступны только для чтения. 4. В операторе FOR SELECT без предложения AS CURSOR необходимо использовать предложение INTO. Если указано предложение AS CURSOR, предложение INTO не требуется, но разрешено. 5. В операторе FETCH предложение INTO необязательное. 6. Чтение из переменной курсора возвращает текущие значения полей. Это означает, что оператор UPDATE (с предложением WHERE CURRENT OF) обновит также и значения полей в переменной курсора для последующих чтений. Выполнение оператора DELETE (с предложением WHERE CURRENT OF ) установит NULL для значений полей переменной курсора для последующих чтений. Замечание: Обратите внимание на использование двоеточие (:) в качестве префикса к ссылке на поле курсора. Ранее, префикс двоеточия использовался в PSQL только, чтобы пометить использование переменной или параметра в регулярном SQL- Новые возможности языка SQL Firebird 3.0 70 операторе. В Firebird 3 использование двоеточия расширено для реализации механизма обработки непеременных, как будто они являются переменными. Примеры: 1. Использование явно объявленного курсора как курсорной переменной Download 1.22 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling