Sql server 节点MSSQL“@input_参数”附近的语法不正确
我已经被这个错误困扰了大约一天了 我在html表单中使用node.js,其中输入类型=复选框,我希望mssql使用表单中发布的数据进行查询 让我们一起说吧Sql server 节点MSSQL“@input_参数”附近的语法不正确,sql-server,node.js,npm,body-parser,Sql Server,Node.js,Npm,Body Parser,我已经被这个错误困扰了大约一天了 我在html表单中使用node.js,其中输入类型=复选框,我希望mssql使用表单中发布的数据进行查询 让我们一起说吧 postData = [ '1','2','3','4','5' ] JS代码: var cfg = { user: 'user', password: '1234', server: 'COMPUTERNAME\\SQLEXPRESS', port: '1433', database: 'test', pool: { max: 2
postData = [ '1','2','3','4','5' ]
JS代码:
var cfg = {
user: 'user',
password: '1234',
server: 'COMPUTERNAME\\SQLEXPRESS',
port: '1433',
database: 'test',
pool: {
max: 20,
min: 0,
idleTimeoutMillis: 30000
}
};
app.post('/select', urlencodedParser, function (req, res){
var in_dt = String();
for (var i = 0; i < req.body.postData.length; i++) {
if (i==0) {
in_dt += ("('" + req.body.postData[i] + "'")
}else if (i==((req.body.postData.length)-1)) {
in_dt += (", '" + req.body.postData[i] + "')")
}else {
in_dt += (", '" + req.body.postData[i] + "'")
}
};
sql.connect(cfg).then(pool => {
return pool.request()
.input('input_parameter', sql.NVarChar, in_dt)
.query('SELECT * FROM [test].[dbo].[Table1] where ID IN @input_parameter')
}).then(result => {
res.render('select', { qDt: result.recordset });
sql.close()
}).catch(err => {
console.log(err);
})
sql.on('error', err => {
console.log(err);
})
});
它给了我
“@input_参数”附近的语法不正确
代码:“EREQUEST”
国家:1
班级:15
但当我复制查询和数据以在SSMS中运行时,一切正常
你能帮我找到错误所在并修复它吗?我认为它不会像这样工作,你必须使用sp_executesql 创建sql,如下所示:
let sql = 'SELECT * FROM [test].[dbo].[Table1] where ID IN (@input_parameter)';
将此sql作为输入参数传递
在查询中,将查询替换ID、标题和所需列放在下面
然后将sp_executesql用作:
create table #tempLookup(ID int , Title nvarchar(MAX));
insert into #tempLookup
exec sp_executesql @sql, N'@input_parameter VARCHAR(MAX)', @input_parameter;
select ID,Title from #tempLookup;
IF OBJECT_ID('tempdb..#tempLookup') IS NOT NULL
DROP TABLE #tempLookup
您需要删除“”字符 Ex in_dt=1,5,6,4,1可以 in_dt='1','5','6','4','1'不正确
var in_dt = String();
for (var i = 0; i < req.body.postData.length; i++) {
if (i==0) {
in_dt += ("(" + req.body.postData[i] + "")
}else if (i==((req.body.postData.length)-1)) {
in_dt += (", " + req.body.postData[i] + ")")
}else {
in_dt += (", " + req.body.postData[i] + "")
}
};
我希望它能帮助你