首页 > 解决方案 > 执行存储过程时出现 node-oracledb 错误

问题描述

我正在使用 Node 10.x 和 Oracledb 3.0

我正在尝试在 node.js 中执行存储过程

我在程序中有异常块,如下所示:

EXCEPTION
WHEN NO_DATA_FOUND THEN
OUT_STATUS:='FAILURE';
OUT_STATUS_DESC:='USER NOT MAPPED TO A GROUP';
WHEN OTHERS THEN
OUT_STATUS:='FAILURE';
OUT_STATUS_DESC:=dbms_utility.format_error_backtrace;

每当控制转到异常块时,在 node.js 中抛出错误。

错误:ORA-24338:未执行语句句柄

但是,明确地说,如果我在 db 中使用相同的 IN 参数执行过程,它会给出正确的 OUT 参数并出现错误并且 CURSOR 已关闭。

这些是过程中的 OUT 参数类型。

OUT_STATUS OUT VARCHAR2, OUT_STATUS_DESC OUT VARCHAR2, OUT_MENU_NAME OUT SYS_REFCURSOR

可能是什么问题?

标签: node.jsoraclenode-oracledb

解决方案


即使您不打算在 node-oracledb 代码中使用它们,所有 OUT 变量也必须设置为某个值,请参阅https://github.com/oracle/node-oracledb/issues/886

事实证明,在所有基于 Oracle 的 C 'OCI' API 的 Oracle DB 驱动程序(例如 node-oracledb)中都是如此,但在 node-oracledb 中更常见的是症状问题。


推荐阅读