3

データを一括で挿入するアプリケーションに取り組んでおり、クエリの数を減らすために、テーブル値パラメーターを使用したいと考えていました。

例:

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 }
4

3 に答える 3

0

Node.js アプリケーションが Windows (Windows Azure Web サイトなど) で実行されている場合、SQL コマンドを実行する便利な方法は、Edge.js ( http: //tjanczuk.github.io/edge )。Edge.js を使用すると、.NET と Node.js をインプロセスで実行できます。

ADO.NET と Edge を使用して基本的な CRUD 操作を Node.js に公開する Edge.js 拡張機能である edge-sql もあります ( http://tomasz.janczuk.org/2013/06/access-sql-azure-from- nodejs-app.html )。edge-sql の現在の機能では、ここで必要なことを達成することはできませんが、edge-sql 自体の実装は、独自の開始点として適している場合があります ( https://github.com/tjanczuk/edge-sql )。機能セットを強化したい場合は、edge-sql への貢献も受け付けます。

于 2013-09-12T22:04:26.673 に答える