Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBExpert Новый топик    Ответить
 Автогрант + with recursive + Var = (select ...)  [new]
ABog
Member

Откуда:
Сообщений: 38
Добрый день, Александр.
Всплыла трабла с CTE в процедуре при попытке сменить форму присваивания результата переменной.
Синтетический пример ниже.
(Версия IBE:2019.8.30.1; Firebird 3.0.5.33074)

В таком виде отрабатывает без вопросов:
create or alter procedure SOME$PROC$Ok as
declare variable I integer;
begin
  with recursive aTree as (select 1 as aLevel
                           from rdb$database
                           union all
                           select T.aLevel + 1 as aLevel
                           from aTree t)
  select first 1 * from aTree into :I;  
end

а вот в таком:
create or alter procedure SOME$PROC$Error as
declare variable I integer;
begin  
  I = (with recursive aTree as (select 1 as aLevel
                           from rdb$database
                           union all
                           select T.aLevel + 1 as aLevel
                           from aTree t)
       select first 1 * from aTree);
end

пытается грантовать процедуре права на таблицу aTree с закономерным результатом:
This operation is not defined for system tables.
unsuccessful metadata update.
GRANT failed.
Table ATREE does not exist.
17 сен 19, 13:01    [21972467]     Ответить | Цитировать Сообщить модератору
 Re: Автогрант + with recursive + Var = (select ...)  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2794
Исправил.
17 сен 19, 18:06    [21972793]     Ответить | Цитировать Сообщить модератору
 Re: Автогрант + with recursive + Var = (select ...)  [new]
ABog
Member

Откуда:
Сообщений: 38
IBExpert,
Спасибо, в 2019.9.17.1 работает
20 сен 19, 02:56    [21974846]     Ответить | Цитировать Сообщить модератору
Все форумы / IBExpert Ответить