Использование функции CTE для вставки в оператор - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь сделать это:

with
  function add_fnc(p_id number) return number
  is
  begin
    return p_id + 1; 
  end;
insert into temp_table
(
select add_fnc(1) from dual
);

Но это показывает ошибку компиляции:

ORA-00928: отсутствует ключевое слово SELECT

Есть ли способ использовать функцию CTE с оператором вставки?

1 Ответ

0 голосов
/ 27 сентября 2018

Попробуйте это:

create table demo (col1 int);

insert /*+ with_plsql */ into demo (col1)
with
    function add_one(p_id number) return number
    as
    begin
        return p_id + 1; 
    end;
select add_one(rownum) 
from dual
/

https://oracle -base.com / Articles / 12c / with-clause-extensions-12cr1

Некоторые инструменты могут не работатьобрабатывать этот синтаксис.У меня это работало в SQL * Plus 12.1 (когда заканчивалось символом косой черты, как для кода PL / SQL), но не получалось в PL / SQL Developer 12.0.7 (Oracle 12.1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...