我有这个功能
create or replace
FUNCTION IFRS_FUNCTION_TEST RETURN NUMBER IS
estado NUMBER;
excepciones NUMBER;
title_code VARCHAR2(150 char);
colgaap_code VARCHAR2(150 char);
ifrs_code VARCHAR2(150 char);
v_causacion VARCHAR2(150 char);
pyg_diario_value VARCHAR2(150 char);
fecha_valoracion VARCHAR2(150 char);
pyg_dialogo VARCHAR2(150 char);
CURSOR ifrscursor IS SELECT no_asignado_por_la_entidad, codigo_puc FROM IFRS_351 WHERE no_asignado_por_la_entidad LIKE 'W%' FOR UPDATE;
BEGIN
BEGIN
estado:=0;
excepciones:=0;
OPEN ifrscursor;
LOOP
FETCH ifrscursor INTO title_code, colgaap_code;
EXIT WHEN ifrscursor%NOTFOUND;
SELECT cta_ifrs into ifrs_code FROM ifrs_tabla_homo_351 WHERE codigo_puc_colgaap = colgaap_code;
UPDATE IFRS_351 SET codigo_puc = ifrs_code WHERE CURRENT OF ifrscursor;
BEGIN
SELECT saldo, pyg_diario into v_causacion, pyg_diario_value FROM IFRS_INV_OBL WHERE nro_titulo=title_code;
UPDATE IFRS_351 SET vr_mercado_o_valor_presente_ = v_causacion, causacion_valoracion_cuentas = pyg_diario_value WHERE CURRENT OF ifrscursor;
EXCEPTION WHEN NO_DATA_FOUND THEN
excepciones:=excepciones+1;
END;
END LOOP;
CLOSE ifrscursor;
EXCEPTION WHEN OTHERS THEN
estado:=SQLCODE;
END;
RETURN(estado);
如何使用Java
estado
获得此函数的EntityManager
值?我尝试过SELECT IFRS_FUNCTION_TEST() FROM DUAL;
但我总是获得错误代码14551。
最佳答案
值-14551实际上是Oracle错误,而不是值。该错误在下面进行了详细说明,并应提供有关其为什么不起作用的更多详细信息。
ORA-14551无法在查询内执行DML操作原因:DML
不能执行插入,更新,删除或选择更新之类的操作
在查询内部或在PDML从属下执行。行动:确保
不执行有问题的DML操作或使用自治
事务以在查询或PDML中执行DML操作
奴隶。