[英]Inserting data using Prepare statement doesn't return inserted record
我正在使用node-sql 。 當我嘗試使用Prepare Statement在表中插入記錄時,recordSet未定義。 下面是示例代碼行。
ps.execute(data, function (err, recordSet, affected) { });
雖然記錄已成功插入數據庫,但它在回調函數中給了我未定義的變量。
您沒有分享您的陳述實際上所做的事情。 但是,如果要使用prepare語句插入記錄。 然后可以使用“ returnValue”或“受影響的”回調參數來代替recordSet。 作為節點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
// ...
});
根據node-mssql文檔(我已經講完了,相信我),記錄集或記錄集是在執行選擇查詢時返回的集。 由於您正在執行插入查詢,因此很可能是未定義的。 因為即使必須返回記錄集,它也會是整個集合(包括新插入的行),在插入中不是很有用:)
簡而言之,如果您的查詢不包含選擇,您將獲得未定義的記錄集。 希望這可以幫助。
是的,我找到了答案,我們需要指定要使用OUTPUT子句返回的記錄。 喜歡:
INSERT INTO Table OUTPUT.Id VALUES(...);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.