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
Out 参数在节点中的参数:
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 );
})