10 return 'ok'; 11 end; 12 / Function created 这个函数往表student2种插入数据。 Step02:在SELECT语句中调用函数f_stu。 SQL> select f_stu()from dual; select f_stu()from dual ORA-14551: cannot perform. a DML operation inside a query ORA-06512: at "F_STU",line 7 〖原理(Cause) 〗 ...
问题 在执行函数时报错ORA-14551: cannot perform a DML operation inside a query select funName() from dual; 原因 在SELECT语句中不能对表进行修改(insert,update,delete)。SELECT语句中的函数试图往表中插入数据就会报错。 解决方案 要想在SELECT语句中对表进行修改,可以使用自治事务(Autonomous Transactions,AT...
对数据库有写操作(INSERT、UPDATE、DELETE、CREATE、ALTER、COMMIT)的存储过程或函数是无法简单的用SQL来调用的,此时可以将其设为自治事务,从而避免ORA-14552(无法在一个查询或DML中执行DDL、COMMIT、ROLLBACK)、ORA-14551(无法在一个查询中执行DML操作)等错误。需要注意的是函数必须有返回值,但仅有IN参数(不能有OU...
问题 在执行函数时报错ORA-14551: cannot perform a DML operation inside a query selectfunName()fromdual; 1. 原因 在SELECT语句中不能对表进行修改(insert,update,delete)。SELECT语句中的函数试图往表中插入数据就会报错。 解决方案 要想在SELECT语句中对表进行修改,可以使用自治事务(Autonomous Transactions,AT)...
<br/>ORA-06502: PL/SQL: numeric or value error: character string buffer too small<br/>ORA-06512: at "TROY.ONTRAC_QRS_PKG", line 760<br/>ORA-14551: cannot perform a DML operation inside a query <br/>ORA-06512: at "TROY.COMMON_SYSTEMLOG_PKG", line 43<br/>ORA-06512: at "TROY...
DBA_TAB_MODIFICATIONS视图(基表为SYS.MON_MODS_ALL$)记录了从上次收集统计信息以来表中DML操作变化的...
ORA-14551: cannot perform a DML operation inside a query 代码是: DECLARE CURSOR F IS SELECT ROLE_ID FROM ROLE WHERE GROUP = 3 ORDER BY GROUP ASC; BEGIN FOR R IN F LOOP DELETE FROM my_gtt_1; COMMIT; INSERT INTO my_gtt_1 ( USER, role, code, status ) ...
想必大部分开发人员在初期都试过这样的操作,最终的结果是啥? PLSQL函数中不能做DML操作,报错ORA-14551: cannot perform a DML operation inside a query 此后,我们可能转而用带out参数的存储过程来间接实现业务需求。 其实,... 查看原文 自治事务pragma autonomous_transaction的使用场景(2、触发器)...
昨天下午写了2个Function,一个是从ERP LN中读出来Item-Purchase BP中的一个指定的Item和BP的Blocking...
ORA-14551: cannot perform a DML operation inside a query 如图: 经查, 对数据库有写操作(INSERT、UPDATE、DELETE、CREATE、ALTER、COMMIT)的函数,是无法简单的用SQL来调用的. 使用"自主事物",可以解决这个问题. 其实"自主事物"的功能,主要是解决回滚时,标记了PRAGMAAUTONOMOUS_TRANSACTION;的代码块不受外面调用的...