gpt4 book ai didi

sql - 如何从 Node 将表值参数插入到 Sql Azure 中?

转载 作者:搜寻专家 更新时间:2023-11-01 00:45:45 25 4
gpt4 key购买 nike

我正在开发一个可以批量插入数据的应用程序,为了减少查询数量,我想使用表值参数。

示例:

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 }

最佳答案

函数 query 的参数必须作为数组传递(参见示例 here )。尝试这样调用它,它应该可以工作:

sql.open(connectionString, function(err, conn) {
if(err) {
return console.error('could not connect to sql', err);
}

var tableValuedObject = { Data: 'Hello World' };

var query = 'usp_InsertSomeTable ?';

conn.query(query, [tableValuedObject], function(err, result) {
if(err) {
return console.error('error running insert', err);
}
});
});

关于sql - 如何从 Node 将表值参数插入到 Sql Azure 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18426000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com