看来
sql对象(即
mssql模块)没有属性来处理任何数组。而且,
ps.input类似地在调用中指定标量类型也不起作用。
第二件事是将参数数组的键构建到sql语句本身中:
var connection = new sql.Connection(config, function(err) { var ps = new sql.PreparedStatement(connection); // Construct an object of parameters, using arbitrary keys var paramsObj = params.reduce((obj, val, idx) => { obj[`id${idx}`] = val; ps.input(`id${idx}`, sql.VarChar(200)); return obj; }, {}); // Manually insert the params' arbitrary keys into the statement var stmt = 'select * from table where id in (' + Object.keys(paramsObj).map((o) => {return '@'+o}).join(',') + ')'; ps.prepare(stmt, function(err) { ps.execute(paramsObj, function(err, data) { callback(null, data); ps.unprepare(function(err) { }); }); }); });}


