gpt4 book ai didi

java - 如何通过 Java EntityManager 调用 PL/SQL 存储函数

转载 作者:行者123 更新时间:2023-11-30 08:59:42 25 4
gpt4 key购买 nike

我有这个功能

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 EntityManager 获取此函数的 estado 值?我试过

SELECT IFRS_FUNCTION_TEST() FROM DUAL;

但我总是得到错误代码 14551。

最佳答案

值-14551 实际上是一个Oracle 错误而不是一个值。该错误在下面进行了详细说明,并且应该提供更多详细信息来说明它为什么不起作用。

ORA-14551 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.

关于java - 如何通过 Java EntityManager 调用 PL/SQL 存储函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27130764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com