首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Oracle过程- Node.js Knex.js

使用Oracle过程- Node.js Knex.js
EN

Stack Overflow用户
提问于 2021-08-03 15:35:11
回答 1查看 311关注 0票数 0

大家早上好!一切都好吗?

我在开发将使用Oracle数据库中的某些信息的API时遇到问题。我使用Knex.js查询构建器在Node.js中开发了这个应用编程接口框架。我直接在后端开发了对数据库的查询,在运行之后,我设置了直接在数据库中进行查询的过程。

但是我不能将这个过程从后端消耗到PLSQL。在Knex文档中,没有关于存储过程消耗的信息。搜索论坛,我看到一些开发人员使用knex.query或knex.execute来执行Begin,然后通过参数使用该过程。但是当我尝试以这种方式运行时,我得到一个错误,指出knex.query或knex.execute不是一个函数。

我认识的人能告诉我出了什么问题吗?或者,有没有其他方法可以在本地完成这种消耗(不使用框架),或者是否有更好的框架为这种类型的执行做好了准备?

代码语言:javascript
复制
 const data = await connection.execute(
            `
            BEGIN
                SP_GUIA_PROCEDURE(P_NUMB_GUIA => 000254, P_NUMB_BENEF => '000025448911000');
            END;
            `
        );

**TypeError: connection.execute is not a function**

非常提前感谢您。

EN

回答 1

Stack Overflow用户

发布于 2021-08-11 13:11:33

看起来你是在使用Knex来获取连接。Knex中没有名为execute()的方法。您可以使用connection.raw()调用存储过程。此外,将绑定用作过程的参数也是一种很好的做法。以下是可以提供帮助的示例代码(带有绑定):

代码语言:javascript
复制
const data = await connection.raw(
      `BEGIN
         SAMPLE_PROCEDURE(:id,:name, :oval);
       END;`,
      {
        id: 11, // Bind type is determined from the data.  Default direction is BIND_IN
        name: {val: 'James', dir: oracledb.BIND_INOUT},
        oval: {type: oracledb.NUMBER, dir: oracledb.BIND_OUT}
      }
    );

SAMPLE_PROCEDURE是存储过程,result是一个包含出绑定的数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68638958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档