我正在使用MSSQL,当我使用knex.raw调用此存储的proc时,我有一个存储的proc返回多个结果集(1个用于数据,1个用于记录计数),Knex仅返回第一个结果集。如何使用Knex + Node.js检索其他记录计数结果集?
{ “ data”:[{“ ID”:6344,“ RequestID”:910846045,“ Requester”:“ XXXXXXX”, “开始”:“ 09/25/2018”, “已完成”:“ 09/25/2018” } { “ ID”:6345, “ RequestID”:910846046, “请求者”:“ XXXXXXX”, “开始”:“ 09/25/2018”, “已完成”:“ 09/25/2018” } ], “ RecordCnt”:2 }
答案 0 :(得分:0)
从使用mssql
迁移到knex
时,我遇到了同样的问题。
简单的答案是knex不支持此功能,但是底层的MSSQL客户端(乏味)支持。如果您熟悉mssql
客户端,则可以简单地从池中获取一个连接,然后按通常的方式使用它来连接execute a stored procedure,例如
const connection = await knex.client.aquireConnection();
const result = await connection.request()
.input('parameter', value)
.execute('[procedure_name]');
knex.client.releaseConnection(connection); // we don't have to wait for this
最后一行非常重要,因为我们正在手动获取连接,所以我们有责任将其释放回池中。否则,将导致池饥饿,并且新请求最终将开始失败(基于池的大小)。