我正在开发一个批量插入数据的应用程序,以减少我想使用表值参数的查询数量。
例子:
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)
);
JavaScript 对象应该具有或尚未在Node-SqlServer项目中实现的结构?
编辑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 }