我正在使用node-sql。 当我尝试使用Prepare Statement在表中插入记录时,recordSet是未定义的。下面是代码行示例。
ps.execute(data, function (err, recordSet, affected) { });
虽然记录已成功插入到数据库中,但它在回调函数中给出了未定义的变量。
答案 0 :(得分:0)
你没有分享你的陈述实际上做的事情。但是,如果您使用准备语句插入记录。然后你可以使用" returnValue"而不是recordSet。或者"受影响的"回调参数。 作为node-sql状态,如果运行将返回某些recordSet的选择查询,则记录集将具有值。 见
request.execute('record', function(err, recordsets, returnValue, affected) {
// ... error checks
console.log(recordsets.length); // count of recordsets returned by the procedure
console.log(recordsets[0].length); // count of rows contained in first recordset
console.log(returnValue); // procedure return value
console.log(recordsets.returnValue); // same as previous line
console.log(affected); // number of rows affected by the statemens
console.log(recordsets.rowsAffected); // same as previous line
console.log(request.parameters.output_parameter.value); // output value
// ...
});
答案 1 :(得分:0)
根据node-mssql文档(我完全了解了一下,相信我),记录集或记录集是执行select查询时返回的集合。 由于您正在执行插入查询,因此很可能未定义。因为即使必须返回记录集,它也会是整个集合(包括新插入的行),这在插入时不是很有用:)
简而言之,如果您的查询不包含选择,您将获得未定义的记录集。 希望这会有所帮助。
答案 2 :(得分:0)
是的我找到了答案,我们需要使用OUTPUT子句指定要返回的记录。像:
INSERT INTO Table OUTPUT.Id VALUES(...);