繁体   English   中英

流水线表函数内的 Oracle / 更新查询

[英]Oracle / update query inside pipelined table function

我有一个工作正常的流水线表函数。

我现在需要的是在这个函数中执行更新查询:

create or replace FUNCTION test(A varchar2 )
 RETURN type_As PIPELINED  as row_type type_A;
Begin
....
update X set A=0 where B=1;
select type_A(...) 
  into   row_type 
  from   dual;
PIPE ROW(row_type);
  return ;
end;

当我运行此查询时:

SELECT * from TABLE(test('123'))

我收到此错误:

ORA-14551: 无法在查询中执行 DML 操作

所以很明显a不能在这里添加更新查询,那么如何执行更新呢?

任何帮助表示赞赏。

尝试添加

pragma autonomous_transaction;

到您的函数并使用动态 SQL 进行更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM