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


select q'{abc{def}ghi}' from


Download 1.22 Mb.
Pdf ko'rish
bet16/62
Sana23.04.2023
Hajmi1.22 Mb.
#1393455
1   ...   12   13   14   15   16   17   18   19   ...   62
Bog'liq
Firebird3 SQL features

select q'{abc{def}ghi}' from rdb$database;
-- result: That's a string 
select q'!That's a string!' from rdb$database;


Новые возможности языка SQL Firebird 3.0 
21 
Динамическая сборка запроса использующего строковые литералы.
EXECUTE BLOCK 
RETURNS ( 
RDB$TRIGGER_NAME CHAR(31) 

AS 
DECLARE VARIABLE S VARCHAR(8191); 
BEGIN 


'SELECT 
RDB$TRIGGER_NAME 
FROM 
RDB$TRIGGERS 
WHERE 
RDB$RELATION_NAME IN '; 
S = S || Q'! ('SALES_ORDER', 'SALES_ORDER_LINE')!'; 
FOR 
EXECUTE STATEMENT :S 
INTO :RDB$TRIGGER_NAME 
DO 
SUSPEND
END 
Запрет смешивания явных и неявных JOIN 
Смешивание явного и неявного синтаксиса JOIN не было рекомендовано 
никогда, но позволялось парсером. Некоторые «смешивания» приводили 
оптимизатор к непредсказуемым результатам, включая ошибку «no current record 
for fetch operation
». Некоторые наиболее стили смешивания запрещены в других 
SQL 
движках, теперь они запрещены и в Firebird. Дело в том что: 
(TA, TB JOIN TC) эквивалентно TA, (TB JOIN C) и не равно (TA, TB) JOIN C 
где каждая часть разделѐнная запятыми есть неявная производная таблица. 
Примечание
Это изменение может нарушить работоспособность вашего приложения. Перед 
переводом вашей системы на Firebird 3 тщательно просмотрите используемые в 
ней запросы на наличии таких случаев. 
Примеры: 
Такой запрос вызовет ошибку «Column does not belong to referenced table». 
SELECT * 
FROM 
TA, TB 
JOIN TC ON TA.COL1 = TC.COL1 
WHERE TA.COL2 = TB.COL2 
Это происходит потому, что явный JOIN не может видеть таблицу TA. Однако 
следующий запрос будет выполнен без ошибок, поскольку изоляция не нарушена. 


Новые возможности языка SQL Firebird 3.0 
22 

Download 1.22 Mb.

Do'stlaringiz bilan baham:
1   ...   12   13   14   15   16   17   18   19   ...   62




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