node.js - 执行存储过程时出现 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-oracledb 代码中使用它们,所有 OUT 变量也必须设置为某个值,请参阅https://github.com/oracle/node-oracledb/issues/886
事实证明,在所有基于 Oracle 的 C 'OCI' API 的 Oracle DB 驱动程序(例如 node-oracledb)中都是如此,但在 node-oracledb 中更常见的是症状问题。
推荐阅读
- python - 无法使用请求从每个结果的内页中抓取名称
- python-3.x - PyCharm 中 ndb Google Cloud Datastore 的类型提示丢失
- javascript - 在反应中通过数据列表发送数据
- javascript - 根据其中的文本对元素进行排序
- html - Scrape Web Page When Selector Does Not Update URL
- javascript - Object.defineProperty 调用非对象错误
- python - 日期时间未转换的数据仍然存在
- wso2 - WSO2 身份服务器可以在自助注册期间根据名字和姓氏生成用户名吗?
- azure - 我应该在 Azure Function 项目中创建自己的 settings.json 吗?
- python - Python 和 Pandas - 用数字列表填充 Pandas DataFrame 列