【问题标题】:Pass Object as input parameter to stored procedure with node-oracledb in node js在节点 js 中使用 node-oracledb 将对象作为输入参数传递给存储过程
【发布时间】:2019-02-09 13:34:40
【问题描述】:

我有一个存储过程,它接受两个输入参数并给出一个输出参数。
输入参数一是Oracle自定义类型,二是CHAR类型
输出参数为数字类型

PROCEDURE SOMEPROCEDURE(
 P_REC IN RV_SEARCH_CRITERIA_REC,
 V_ITEM_BATCH_ID_FLAG IN CHAR,
 V_RV_BATCH_ID OUT NUMBER)

here RV_SEARCH_CRITERIA_REC is 
TYPE RV_SEARCH_CRITERIA_REC IS OBJECT(
   CUSTOMER_NAME   VARCHAR2(3000)
)

有人可以帮助我使用 node-oracle 节点模块访问该程序吗?

【问题讨论】:

标签: node.js oracle stored-procedures


【解决方案1】:

鉴于此过程:

CREATE OR REPLACE PROCEDURE myproc (id IN NUMBER, name OUT VARCHAR2) AS
BEGIN
  SELECT last_name INTO name FROM employees WHERE employee_id = id;
END;

您可以使用以下代码执行它:

    . . .
connection.execute(
  "BEGIN myproc(:id, :name); END;",
  {  // bind variables
    id:   159,
    name: { dir: oracledb.BIND_OUT, type: oracledb.STRING, maxSize: 40 },
  },
  function (err, result) {
    if (err) { console.error(err.message); return; }
    console.log(result.outBinds);
  });

尝试通过替换过程名称、参数和绑定以相同的方式执行您的。

在此处查看文档:https://oracle.github.io/node-oracledb/doc/api.html

【讨论】:

  • 作为参考,node-oracledb 的当前生产版本的文档位于oracle.github.io/node-oracledb/doc/api.html 这些文档的 github 副本可能会讨论即将推出的功能,这些功能只有在您自己编译 node-oracledb 时才可用。
  • 感谢@ChristopherJones 的提醒!我刚刚用正确的链接更新了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
相关资源
最近更新 更多