大家早上好!一切都好吗?
我在开发将使用Oracle数据库中的某些信息的API时遇到问题。我使用Knex.js查询构建器在Node.js中开发了这个应用编程接口框架。我直接在后端开发了对数据库的查询,在运行之后,我设置了直接在数据库中进行查询的过程。
但是我不能将这个过程从后端消耗到PLSQL。在Knex文档中,没有关于存储过程消耗的信息。搜索论坛,我看到一些开发人员使用knex.query或knex.execute来执行Begin,然后通过参数使用该过程。但是当我尝试以这种方式运行时,我得到一个错误,指出knex.query或knex.execute不是一个函数。
我认识的人能告诉我出了什么问题吗?或者,有没有其他方法可以在本地完成这种消耗(不使用框架),或者是否有更好的框架为这种类型的执行做好了准备?
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**非常提前感谢您。
发布于 2021-08-11 13:11:33
看起来你是在使用Knex来获取连接。Knex中没有名为execute()的方法。您可以使用connection.raw()调用存储过程。此外,将绑定用作过程的参数也是一种很好的做法。以下是可以提供帮助的示例代码(带有绑定):
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是一个包含出绑定的数组。
https://stackoverflow.com/questions/68638958
复制相似问题