如何在knex.js中使用输出返回运行mysql存储过程

s6fujrry  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(354)

我对knex.js有问题
如何在knex.js中用输出调用存储过程
sp string:调用sp\u start(1,@outmsg);
我需要调用该sp并选择相应的输出
我的代码:

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

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

但它返回错误

mctunoxg

mctunoxg1#

根据如何将参数传入和传出mysql存储过程,并在nodejs代码中返回存储过程结果

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));

应该有用。

fwzugrvs

fwzugrvs2#

我正在使用带有路由/服务的express服务器。上面的答案对我不适用。
工作原理是使用多语句原始方法,如:

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

您还需要添加 multipleStatements: true 连接到mysql。

相关问题