如何在knex.js中运行带有输出返回的mysql存储过程

时间:2018-12-20 11:01:20

标签: mysql api knex.js

我对knex.js有问题

如何在knex.js中使用输出调用存储过程

sp字符串:调用sp_start(1,@outmsg);

我需要调用该SP并选择返回的输出

我的代码:

    .get('/:headerId/recount', function(req, res, next) {

    knex.raw(
    'Call sp_start(?,?)',[req.params.headerId, @outmsg]
    )
    .then(function(result) {
       return; 
        });
  })

但它返回错误

2 个答案:

答案 0 :(得分:2)

我正在使用具有路由/服务的Express服务器。上面的答案对我不起作用。

所做的工作是使用多语句原始方法,如下所示:

ExpressService(knex, param){
  return knex.raw(`call sp_start(${param}, @outmsg); select @outmsg as outmsg;`);
};

您还需要将multipleStatements: true添加到您的MySQL连接中。

答案 1 :(得分:0)

根据how to pass in and out parameters to a mysql stored procedure and return the stored procedure result in the nodejs code

knex.transaction(trx => {
  return knex.raw(
    'Call sp_start(?,@outmsg)',
    [req.params.headerId]
  )
  .then(res => knex.select(knex.raw('@outmsg')));
})
.then(res => console.log("Got output:", res));

应该工作。