"Хорсун Влад"
> А что ты хотел этим сделать ? Добиться того, чтобы я запретил
> COMMIT\ROLLBACK
> в EXECUTE STATEMENT ? Так я это сделаю ;)
Ну думаю не стоит, ибо COMMIT RETAIN есть )
Вообще, оптимизация соединения EXECUTE STATEMENT с внешними
датасорсами - это нужная вещь.
НАПРИМЕР:
Выполнили RDB$SET_CONTEXT, а потом давай из VIEW запросы писать. Ну
а VIEW данные по контексту ограничивают.
----
Вышел на это случайно.
Прочитал в README.monitoring_tables.txt:
DELETE FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID <>
CURRENT_CONNECTION
любопытство заставило задаться вопросом: "А что ели не указать
условие?"
И что?... ничего!
Тогда стал копать в сторону: "А как же тогда <<саммо-отключиться>>"
родилось нечто вида:
execute block as
declare variable DB_NAME TYPE OF COLUMN MON$ATTACHMENTS.MON
$ATTACHMENT_NAME;
begin
SELECT A.MON$ATTACHMENT_NAME FROM MON$ATTACHMENTS A
WHERE A.MON$ATTACHMENT_ID = CURRENT_CONNECTION
INTO :DB_NAME;
EXECUTE STATEMENT ('DELETE FROM MON$ATTACHMENTS WHERE MON
$ATTACHMENT_ID = :CONN') (CONN := CURRENT_CONNECTION)
ON EXTERNAL 'localhost/3051:' || :DB_NAME
--WITH AUTONOMOUS TRANSACTION
AS USER 'SYSDBA' PASSWORD 'masterkey';
end