Node.js 如何在NPM MSSQL中将参数传递给PreparedStatement存储过程
我试图将参数传递给npm mssql中的存储过程准备语句。npm文档中有查询示例,但没有SPs示例。当我尝试调用SP时,我得到“…预期参数'@ID',但未提供”。我添加了日志记录,以查看参数是否进入函数。这是我的密码:Node.js 如何在NPM MSSQL中将参数传递给PreparedStatement存储过程,node.js,angular,npm,Node.js,Angular,Npm,我试图将参数传递给npm mssql中的存储过程准备语句。npm文档中有查询示例,但没有SPs示例。当我尝试调用SP时,我得到“…预期参数'@ID',但未提供”。我添加了日志记录,以查看参数是否进入函数。这是我的密码: storedproc(sp, params, raw) { if (!sp) return Promise.reject('Stored Procedure is required') if (!params) return this.simpleSP(sp)
storedproc(sp, params, raw) {
if (!sp) return Promise.reject('Stored Procedure is required')
if (!params) return this.simpleSP(sp)
console.log(params);
return new Promise((resolve, reject) => {
if (!params) params = {}
let ps = new sql.PreparedStatement(this.pool)
//add the key / values to the prepared statements from referenced params
for (let key in params) {
console.log(typeof params[key]);
console.log(key);
console.log(params[key]);
//map type of var with SQL data type
if (typeof params[key] == 'number') {
ps.input(key, sql.Float)
} else if (typeof params[key] == 'string') {
ps.input(key, sql.VarChar(params[key].length))
} else if (typeof params[key] == 'int') {
ps.input(key, sql.Int)
} else if (typeof params[key] == 'date') {
ps.input(key, sql.Date)
} else {
ps.input(key, sql.VarChar)
}
}
console.log(ps.parameters);
//prepare the statement
ps.prepare(sp, err => {
if (err) return reject(err)
ps.execute(params, (err, result) => {
if (err) return reject(err)
//return the resulting recordset
resolve(raw ? result : result.recordset)
//clear the prepared statement
ps.unprepare(err => {
if (err) reject(err)
})
})
})
})
}
这是日志显示的内容:
console.log(params); is showing { ID: '26' }
console.log(typeof params[key]); is showing 'string'
console.log(key); is showing 'ID'
console.log(params[key]); is showing '26'
返回的错误是:(节点:11140)未处理的PromisejectionWarning:RequestError:Procedure 或函数“Get_Data_TESTING”需要未提供的参数“@ID” 如何将参数传递给SP