А нефиг внутренние таблицы адресовать. Снаружи виден только TR, его и
пытайся апдейтить.
Так я ж не знаю как. Не описано это. Сижу и пробую как попало. Пробовал
я и такое:
EXECUTE BLOCK
RETURNS (
ID INTEGER)
AS
BEGIN
FOR WITH RECURSIVE TR AS (SELECT * FROM "Tree" WHERE PARENT_ID IS NULL)
SELECT ID FROM TR INTO :ID AS CURSOR CUR DO
BEGIN
UPDATE TR SET NAME = NAME || '!' WHERE CURRENT OF CUR;
SUSPEND;
END
END
Говорит:
Invalid cursor reference.
Relation TR is not found in cursor CUR.
И такое:
EXECUTE BLOCK
RETURNS (
ID INTEGER)
AS
BEGIN
FOR WITH RECURSIVE TR AS (SELECT * FROM "Tree" WHERE PARENT_ID IS NULL)
SELECT ID FROM TR INTO :ID AS CURSOR CUR DO
BEGIN
UPDATE TR SET NAME = NAME || '!' WHERE ID = 5;
SUSPEND;
END
END
Сказало
Table unknown.
TR.
(в т.ч. с пердставлениями и UNION) :-/
Мама родная...
А что? Вон в MS SQL работает :-)