我们可以在Oracle SQL函数中使用commit语句吗?

Sri*_*san 2 sql oracle

在SQL函数中使用COMMIT语句是否可行/有意义?

HAL*_*000 6

从技术上讲,答案是肯定的.您可以执行以下操作:

create or replace function committest return number as 
begin 
  update my_table set col = 'x';
  commit;
  return 1;
end;
/

declare
  number n;
begin
  n := committest();
end;
/
Run Code Online (Sandbox Code Playgroud)

但是,您无法执行以下操作:

select committest() from dual;
Run Code Online (Sandbox Code Playgroud)

这将是查询期间的提交,从而导致a

ORA-14552:无法在查询或DML内执行DDL提交或回滚