connection.query("call vts_active_tagid('"+RFIDNumber+"','"+Latitude+"','"+Longitude+"','"+datetime+"','"+imeno+"',@passengers,@trip)");
此存储过程提供一个输出,其中包含firstname,phone number和passengerid,如何在nodejs代码中获取这些值
答案 0 :(得分:6)
首先,首先将mysql设置为接受多个语句
set mysql.createConnection({multipleStatements: true});
查询
query_str = "CALL sp_whatever(?,?,?,@output); select @output";
con.query(query_str, [param1, param2, param3], function(err,rows){
if(err) throw err;
console.log(rows);
});
输出:
[OkPacket {
fieldCount: 0,
affectedRows: 0,
insertId: 0,
serverStatus: 10,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 },
[ RowDataPacket { '@output': -2 } ] ]
答案 1 :(得分:4)
为您准备的样本
dbConnection.getConnection(function(err, connection){
var edituserSQL = "CALL spEditTheme(?,?,?,?)";
var resultt;
connection.query(edituserSQL, [ object.selfid,object.theme_background,object.theme_foreground,dateTimeNow ], function(ERROR,RESULT) {
if (ERROR) {
cb(ERROR, null);
} else {
console.log("exEditUserTheme result");
console.log(RESULT);
var account = RESULT[0][0].result;
cb(null, account);
}
});
connection.release();
});
答案 2 :(得分:0)
让sql = CALL storedproc(${rfidnumber},${latitude},${longitude},${date})
connection.query(sql,(错误,结果,字段)= { 如果(错误)抛出错误 response.send(结果[0]) })
答案 3 :(得分:0)
Nodejs代码:
con.query("CALL sp_ReturnValue(?, @ret_value); CALL sp_ReadReturnValue;", [id], (err, rows) => {
if (!err && rows[0].affectedrows != 0) {
console.log("Print return value ", rows[1][0].ret_value);
}
})
具有输入和输出参数的存储过程:
CREATE PROCEDURE `sp_ReturnValue`(
p_Id int(11), -- Input param
OUT r_status INT(11) -- output param
)
BEGIN
SELECT Status FROM tblUsers WHERE tblUsers_ID = p_Id; // use of input param
SET r_status = 2; // use of output param
END
读取返回值:
CREATE PROCEDURE `sp_ReadReturnValue`()
BEGIN
SELECT @ret_value AS ret_value;
END
您也可以在不使用存储过程的情况下读取值:
SELECT @ret_value AS ret_value;
示例:
con.query("CALL sp_ReturnValue(?, @ret_value); SELECT @ret_value AS ret_value", [id], (err, rows) => {
console.log("Print return value ", rows[1][0].ret_value);
})
您还可以返回多个值,例如:
CREATE PROCEDURE `sp_ReturnValue`(
p_Id int(11), -- Input param
OUT r_status1 INT(11) -- output param
OUT r_status2 VARCHAR(11) -- output param
OUT r_status3 INT(11) -- output param
)
BEGIN
SELECT Status FROM tblUsers WHERE tblUsers_ID = p_Id; // use of input param
SET r_status1 = 2; // use of output param
SET r_status2 = "ABCD"; // use of string output param
SET r_status3 = 2; // use of output param
END
阅读类似:
CREATE PROCEDURE `sp_ReadReturnValue`()
BEGIN
SELECT @ret_value1 AS ret_value1,
@ret_value2 AS ret_value2,
@ret_value3 AS ret_value3;
END
输出参数的节点输入参数:
con.query("CALL sp_ReturnValue(?, @ret_value1, @ret_value2, @ret_value3); CALL sp_ReadReturnValue;", [id], (err, rows) => {
console.log("Print return value \n ");
console.log(rows[1][0].ret_value1 "\n");
console.log(rows[1][0].ret_value2 "\n");
console.log(rows[1][0].ret_value3 );
})