簡體   English   中英

使用Prepare語句插入數據不會返回插入的記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM