Как вызвать таблицу обновления, которая находится внутри процедуры для функции в PLSQL? - PullRequest
0 голосов
/ 21 мая 2019

Это моя ситуация:

У меня есть процедура, которая выполняет обновление таблицы следующим образом:

PROCEDURE UPDATE_MODEL AS
STR VARCHAR2(10000);

BEGIN

STR:='UPDATE SAE_MODEL_TABLE.....'
EXECUTE IMMEDIATE STR;

Мне нужно сделать функцию, которая вызывает это UPDATE SAE_MODEL_TABLE ...

Я пытался с этим кодом

FUNCTION GET_MODEL_TABLE  RETURN CLOB AS
STR4 VARCHAR2(50);
count_table number;

BEGIN

str4:='select count(1) from SAE_MODEL_TABLE;
execute immediate str4 into count_table;

IF count_table <> 0 then
UPDATE_MODEL ;

У меня есть эта ошибка:

ORA-14551: операция DML не может быть выполненав запросе

Я знаю, что относится к добавлению обновления ...

1 Ответ

0 голосов
/ 21 мая 2019

Я не знаю, почему вы используете динамический SQL, но если вы действительно хотите это сделать, он может выглядеть следующим образом

PROCEDURE UPDATE_MODEL AS
  STR VARCHAR2(10000);
BEGIN

  STR:='UPDATE SAE_MODEL_TABLE.....'
  EXECUTE IMMEDIATE STR;
end;


FUNCTION GET_MODEL_TABLE  RETURN CLOB AS
  STR4 VARCHAR2(50);
  count_table number;
  my_clob clob;
BEGIN

  str4:='select count(1) from SAE_MODEL_TABLE';
  execute immediate str4 into count_table;

  IF count_table <> 0 then
    UPDATE_MODEL() ;
  end if;

  return my_clob;
end;
...