Dmitriy Kovalenko wrote:

> Долго и упорно я оттягивал свое
> знакомство с конструкцией EXECUTE STATEMENT,

   А здря. В некоторых случаях даёт феноменальное ускорение. Например, 
на клиенте в процессе юзеровых мучений над неким Select сформирована 
некая совокупность условий Where, ограничивающих некую выборку для 
апдейта. Причём апдейт не может быть сформулирован как один стейтмент с 
этим перечнем условий. Простейший случай - модифицируемая таблица входит 
в джойн и условия Where наложены на другие таблицы в джойне. Если по 
старинке - либо бечь по выборке на клиенте из начала в конец и апдейтить 
по одной (трафик), либо передавать в СП с фокусами список ID (часто 
неэффективно и тоже трафик), либо формировать псевдовременнную таблицу с 
ID (мусор и опять трафик). А тут - передаёшь в СП, содержащую 
строку-константу 'Select ID From как в том селекте на клиенте' короткую 
(в сравнении) строку с этим самым Where, склеиваешь их там и For Execute 
Statement Into :ID Do Update. Рррракета.

> поэтому не скажу, буду ли я перед ней
> лазить в RDB$RELATION_FIELDS...

   А куда ты из колеи денешься.

> Но могло бы быть
> удобным из триггера на таблице
> (предположим, список имен таблиц,
> подлежащих некоему логированию),
> создавать "логирующий" триггер для
> необходимых таблиц.

   Не, ну если типа однократная процедура с генерированием статических 
триггеров, то в общем-то и ничо. А на клиенте такую точно аппликушку 
сваять и юзать в хвост и в гриву для генерирования триггеров, уже не 
модно? ;) Обязательно надо в триггере? Кстати, Эксперт на костях 
IbLogManager-а это делает ведь уж года 3 точно. Кстати, если триггера 
генерируются в триггерах от спецтаблицы, то нафик тебе в них 
Current_Table? Там ведь всегда она и будет ;)

> Смотрю в описание ES, вижу: "* Any DDL (except
> Create/Drop Database).", должно работать...

   Тока не забудь, что работать начнут только после коммита опять же с 
клиента. Такшта чем такой гибридный тул с привлечением СП и спецтаблицы 
лучше клиентского просмотровщика RDB$Relations, генерирующего триггер 
для текущей в гриде таблицы по шаблону с заглядыванием в 
RDB$Relation_Fields за именами полей при нажатии пимпочки, ни фига не 
понятно.

-- 
Regards. Ded.

Ответить