データを一括で挿入するアプリケーションに取り組んでおり、クエリの数を減らすために、テーブル値パラメーターを使用したいと考えていました。
例:
var sql = require('node-sqlserver');
var connectionString = 'Driver={SQL Server Native Client 11.0};server=tcp:serverName.database.windows.net,1433;UID=user@serverName;PWD=password;Database={databaseName};Encrypt=yes;Connection Timeout=30;';
sql.open(connectionString, function(err, conn) {
if(err) {
return console.error('could not connect to sql', err);
}
var tableValuedObject = ???;
var query = 'usp_InsertSomeTable ?';
conn.query(query, tableValuedObject, function(err, result) {
if(err) {
return console.error('error running insert', err);
}
});
});
は次 usp_InsertSomeTable
のように定義されています
CREATE PROCEDURE usp_InsertSomeTable
@TVP SomeTableType READONLY
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO SomeTable (Data) SELECT Data FROM @TVP;
END
テーブル値オブジェクトを次のように定義しています
CREATE TYPE SomeTableType AS TABLE
(
Data VARCHAR(50)
);
Node-SqlServerプロジェクトで実装されていない、または実装されていない JavaScript オブジェクトの構造は何ですか?
編集1:
を使用var tableValuedObject = { Data: 'Hello World' };
するとエラーが発生します。
node-sqlserver\lib\sql.js:3254: Uncaught Error: [msnodesql] Invalid parameter(s) passed to function query or queryRaw.
編集2:
を使用var tableValuedObject = [{ Data: 'Hello World'}];
すると、次のエラーが生成されます。
error running query { [Error: IMNOD: [msnodesql] Parameter 1: Invalid parameter type] sqlstate: 'IMNOD', code: -1 }