【发布时间】:2022-02-03 20:23:39
【问题描述】:
我写了一个程序,在使用 node-oracledb 库在数据库中进行插入时,我需要返回最后生成的 ID。
我使用DBMS_OUTPUT返回过程中声明的变量的值,在SQL Developer中可以返回值输出,但是在node-oracledb库中无法返回。
程序:
create or replace PROCEDURE TESTE.CREATE_PATIENT(
p_DT_NASCIMENTO IN TESTE.PESSOA_FISICA.DT_NASCIMENTO%TYPE,
p_IE_SEXO IN TESTE.PESSOA_FISICA.IE_SEXO%TYPE,
p_NR_CPF IN TESTE.PESSOA_FISICA.NR_CPF%TYPE,
p_NR_REG_GERAL_ESTRANG IN TESTE.PESSOA_FISICA.NR_REG_GERAL_ESTRANG%TYPE,
p_NR_PASSAPORTE IN TESTE.PESSOA_FISICA.NR_PASSAPORTE%TYPE,
p_NM_PESSOA_FISICA IN TESTE.PESSOA_FISICA.NM_PESSOA_FISICA%TYPE,
p_CD_ACOMPANHANTE IN TESTE.PESSOA_FISICA_ACOMPANHANTE.CD_ACOMPANHANTE%TYPE,
p_NR_TELEFONE_CELULAR IN TESTE.PESSOA_FISICA.NR_TELEFONE_CELULAR%TYPE
)
IS
p_CD_PESSOA_FISICA NUMBER;
BEGIN
INSERT INTO TESTE.PESSOA_FISICA (DT_NASCIMENTO,IE_SEXO,NM_PESSOA_FISICA,NR_CPF,NR_PASSAPORTE,NR_REG_GERAL_ESTRANG,NR_TELEFONE_CELULAR) VALUES(p_DT_NASCIMENTO,p_IE_SEXO,p_NM_PESSOA_FISICA,p_NR_CPF,p_NR_PASSAPORTE,p_NR_REG_GERAL_ESTRANG,p_NR_TELEFONE_CELULAR) RETURNING CD_PESSOA_FISICA INTO p_CD_PESSOA_FISICA;
INSERT INTO TESTE.PESSOA_FISICA_ACOMPANHANTE (CD_PESSOA_FISICA, CD_ACOMPANHANTE) VALUES(p_CD_PESSOA_FISICA, p_CD_ACOMPANHANTE);
DBMS_OUTPUT.PUT_LINE(p_CD_PESSOA_FISICA);
COMMIT;
END;
调用过程:
SET SERVEROUTPUT ON
BEGIN CREATE_PATIENT(TO_DATE('1981-12-10', 'YYYY-MM-DD'), 'F', '25845685236', '12345645', '65432145', 'Marina Santos', '3', '+5511999999999'); END;
查看返回: Return In SQL Developer
我需要用 node-oracledb 返回这个值,有没有人经历过这个并且可以帮助我?
【问题讨论】:
-
如果你真的必须使用
DBMS_OUTPUT,那么记录了一个方法here,但是你不应该这样做并且应该重构你的过程来使用OUT参数。 -
我同意使用 OUT 绑定。要添加有关 DBMS_OUTPUT 的更可能更新的参考,其上的 node-oracledb 文档位于 oracle.github.io/node-oracledb/doc/api.html#dbmsoutput
-
MTO 和 Christopher 非常感谢!我将应用更改并进行测试。
-
成功了,谢谢! :D
标签: node.js oracle node-oracledb