如何为PLSQL中的函数调用过程中的更新表?

时间:2019-05-21 14:14:30

标签: function plsql procedure

这是我的情况:

我有一个执行更新表的过程,如下所示:

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 :(得分:0)

我不知道为什么要使用动态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;