3

面倒な TVP を使用しようとしていますが、DateTimeパラメーターの使用中にこのエラーが発生し続けます。

リクエストの作成中の例外は次のとおりです。

 days = Math.floor((parameter.value.getTime() - UTC_EPOCH_DATE.getTime()) /
 (1000 * 60 * 60 * 24));
                                             ^

例外:

TypeError: parameter.value.getTime は関数ではありません

コードは次のようになります

/*declare table*/``    
let table = {
        columns: [
            { name: 'a', type: TYPES.VarChar, length: 50, nullable: true },
            { name: 'b', type: TYPES.Int},
            { name: 'c', type: TYPES.DateTime}

        ],
        rows: [
           ['hello tvp', 777,'05/08/07 12:35 PM'],
           ['OLO', 45,'05/08/16 1:30 AM']
        ]
    };

/*request code*/
var request = new Request("MyCustomStoredProcedure", function (err, rowCount) {
                    if (!err) {
                        callback(err)
                        logger.info("rowCount", rowCount)
                    } else {
                        callback(rowCount)
                        logger.error("Error => ", err)
                    }
                });
                request.addParameter('tvp', TYPES.TVP, table);

                request.on('row', function (columns) {
                     logger.info("data", columns)
                });

                connection.callProcedure(request);



CREATE TYPE TestType AS TABLE (a VARCHAR(50), b INT, c DateTime);

CREATE PROCEDURE MyCustomStoredProcedure 
    (@tvp TestType readonly) 
AS 
    SELECT * 
    FROM @tvp

data-types.js の面倒なコードを見ると、parameter.valueが object ではなく string であることがわかりました。

ここで何が間違っているのかわかりません。

私が試したこと

  • なしdatetime- 作品
  • with DateTime2- 着信表形式データ ストリーム (TDS) リモート プロシージャ コール (RPC) プロトコル ストリームが正しくありません。パラメータ 2 (""): データ型 0x03 は不明です。
  • https://github.com/patriksimek/node-mssqlを使用しますが、内部的には再び Tedious を使用します
4

3 に答える 3

5

DateTime の代わりに Varchar を使用したところ、問題が解決しました。それが最善の解決策ではないことは理解していますが、時間の都合上、それを採用しました。

于 2016-06-27T21:23:06.087 に答える