我期待知道如何使用Nodejs中的多个输入参数运行Azure SQL存储过程。
例如,如果我有一个运行查询的存储过程FIND_USERS(activity_status, color, gender)
select * from users where isActive = activity_status and bay_color = color and userGender = gender;
我应该可以使用输入参数从nodejs调用此存储过程。这里要理解的是,我想要一个SQL事务服务,它可以接受任何CALL PROCEDURE类型命令以及输入参数集,并使用这些输入参数调用过程,而不管输入参数的数量。
我所知道的是,对于MySQL,有一个mysql
库,它允许我运行具有多个参数的过程。我已将其封装在MySQLConnector.js服务中
var mysql = require('mysql');
exports.query = function(sql, values, next) {
if (arguments.length === 2) {
next = values;
values = null;
}
var connection = mysql.createConnection({
host:host,
user:user,
password:password,
database:database
});
connection.connect(function(err) {
if (err !== null) {
console.log("[MYSQL] Error connecting to mysql:" + err+'\n');
console.log(err == 'Error: ER_CON_COUNT_ERROR: Too many connections')
if(err == 'Error: ER_CON_COUNT_ERROR: Too many connections'){
connection.end();
}
}
});
connection.query(sql, values, function(err) {
connection.end();
if (err) {
throw err;
}
next.apply(this, arguments);
});
}
有了这个,我可以使用类似
的函数从nodejs调用存储过程MySQLConnector.query('CALL FIND_USERS (?, ?, ?)', [1, 'blue', 'female'], function(err, userData) {
//do something with userData
});
如何为Azure MS SQL执行此操作?
答案 0 :(得分:1)
您可以使用tedious驱动程序连接到SQL Server。它支持语句和SP的输入+输出参数,您可以在http://tediousjs.github.io/tedious/parameters.html
中找到示例如果您需要更多帮助,请随意在GitHub中提出问题。
答案 1 :(得分:0)