Руководство по языку sql


Download 1.22 Mb.
Pdf ko'rish
bet12/62
Sana23.04.2023
Hajmi1.22 Mb.
#1393455
1   ...   8   9   10   11   12   13   14   15   ...   62
Bog'liq
Firebird3 SQL features

FROM T1 
ORDER BY COL1 
FETCH FIRST 10 ROWS ONLY 
3. 
Использование предложений OFFSET и FETCH в производной таблице
результат которой ограничивается ещѐ раз во внешнем запросе. 
SELECT *
FROM ( 
SELECT *
FROM T1 
ORDER BY COL1 DESC 
OFFSET 1 ROW 
FETCH NEXT 10 ROWS ONLY 
) a 
ORDER BY a.COL1 
FETCH FIRST ROW ONLY 
Дополнительные возможности оператора MERGE
Доступно: DSQL, PSQL.
Оператор MERGE дополнен новыми возможностями из стандарта SQL-2008. 
В Firebird 3 добавлены следующие возможности: 

Поддержка предложения DELETE 

Поддержка множества предложений WHEN MATCHED | WHEN NOT 
MATCHED 
с дополнительными условиями 

Поддержка предложения RETURNING … INTO 
Синтаксис
MERGE 
INTO  [AS target_alias]
USING  [AS source_alias
ON  
 [ ...


Новые возможности языка SQL Firebird 3.0 
16 
[RETURNING 
[INTO ]] 
 ::=  |  
 ::= 
WHEN MATCHED [ AND  ] THEN 
{ UPDATE SET  | DELETE } 
 ::= 
WHEN NOT MATCHED [ AND  ] THEN 
INSERT [ () ] 
VALUES (
 ::= colname = value [, colname = value ...] 
 ::= colname [, colname ...] 
 ::= value [, value ...] 
 ::= [:]var [, [:]var ...] 
 ::= Таблица или обновляемое представление 
::= Таблица, представление, хранимая процедура или 
производная таблица 
Поддержка предложения DELETE 
В Firebird 3 в предложениях WHEN MATCHED разрешено не только 
обновлять записи целевой таблицы (обновляемого представления), но и удалять 
их, если вместо предложения UPDATE указано предложение DELETE. 
Примеры
Следующий запрос
DELETE FROM SALARY_HISTORY 
WHERE EMP_NO IN (SELECT EMP_NO 
FROM EMPLOYEE 
WHERE DEPT_NO = 120) 
можно изменить на эквивалентный ему запрос с использованием оператора 
MERGE
. В ряде случаев его выполнение может быть более эффективным. 
MERGE INTO SALARY_HISTORY 
USING (SELECT EMP_NO 


Новые возможности языка SQL Firebird 3.0 
17 
FROM EMPLOYEE 
WHERE DEPT_NO = 120) EMP 
ON SALARY_HISTORY.EMP_NO = EMP.EMP_NO 
WHEN MATCHED THEN DELETE 
Поддержка множества предложений WHEN MATCHED | WHEN NOT MATCHED 
с дополнительными условиями 
В Firebird 3 разрешено указывать несколько предложений WHEN MATCHED и 
WHEN NOT MATCHED.
Предложения WHEN проверяются в указанном порядке. Если условие в 
предложении WHEN не выполняется, то мы пропускаем его и переходим к 
следующему предложению. Так будет происходить до тех пор, пока условие для 
одного из предложений WHEN не будет выполнено. В этом случае выполняется 
действие, связанное с предложением WHEN, и осуществляется переход на 
следующую строку источника. Для каждой строки источника выполняется только 
одно действие. 
Примеры
В следующем примере происходит ежедневное обновление таблицы 
PRODUCT_IVENTORY 
на 
основе 
заказов, 
обработанных 
в 
таблице 
SALES_ORDER_LINE. Если количество заказов на продукт таково, что уровень 
запасов продукта опускается до нуля или становится еще ниже, то строка этого 
продукта удаляется из таблицы PRODUCT_IVENTORY. 

Download 1.22 Mb.

Do'stlaringiz bilan baham:
1   ...   8   9   10   11   12   13   14   15   ...   62




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling