Home  >  Article  >  Database  >  ORA-14551: 无法在查询中执行 DML 操作 解决方法

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

WBOY
WBOYOriginal
2016-06-07 17:13:101865browse

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

--创建测试表
create table fn_dml_test
(
  ID    NUMBER(20),
  text  VARCHAR2(200)
)

--创建函数
CREATE OR REPLACE FUNCTION fn_test(ID NUMBER) RETURN NUMBER
IS
/*
14551, 00000, "cannot perform a DML operation inside a query "
// *Cause:  DML operation like insert, update, delete or select-for-update
//          cannot be performed inside a query or under a PDML slave.
// *Action: Ensure that the offending DML operation is not performed or
//          use an autonomous transaction to perform the DML operation within
//          the query or PDML slave.
*/
pragma  AUTONOMOUS_TRANSACTION;
BEGIN
  INSERT INTO fn_dml_test(id,text) values(ID,'success');
  COMMIT;
  RETURN 1;
EXCEPTION
  WHEN OTHERS THEN
  INSERT INTO fn_dml_test(id,text) values(ID,'fail');
  COMMIT;
  RETURN 0;
END;

--查询验证
SELECT fn_test(1) from dual

更多Oracle相关信息见Oracle 专题页面 ?tid=12

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Oracle 集合运算Next article:Oracle 基本查询 查看排名