如何将参数传入和传出给mysql存储过程并在nodejs代码中返回存储过程结果

use*_*717 1 mysql stored-procedures node.js

connection.query("call vts_active_tagid('"+RFIDNumber+"','"+Latitude+"','"+Longitude+"','"+datetime+"','"+imeno+"',@passengers,@trip)");
Run Code Online (Sandbox Code Playgroud)

此存储过程提供一个输出,其中包含firstname,phone number和passengerid,如何在nodejs代码中获取这些值

fun*_*983 8

  1. 首先,设置你的mysql接受多个语句

    set mysql.createConnection({multipleStatements: true});

  2. 做你的询问

    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 } ] ]
Run Code Online (Sandbox Code Playgroud)


pit*_*itu 3

给你一个样本

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();
    });
Run Code Online (Sandbox Code Playgroud)