Node.js调用mysql存储过程返回值
直接调用SQL语句和调用存储过程返回数据格式不一样。
直接调用语句返回值是这样的:
select语句:
[ RowDataPacket { fields: 116 } ]
update语句:
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 0,
serverStatus: 34,
warningCount: 0,
message: '(Rows matched: 1 Changed: 1 Warnings: 0',
protocol41: true,
changedRows: 1 }
insret语句:
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 0,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 }
存储过程返回是这样的:
[ [ RowDataPacket { st: 1 } ], //存储过程里面最后一条select语句取回的值
OkPacket {
fieldCount: 0,
affectedRows: 0,
insertId: 0,
serverStatus: 34,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 } ]
从上面的结果可以看出,取用SQL语句和存储过程的返回值写法也不可能一样。
取SQL返回值:
let ret = rows[0].field;
取存储过程返回值:
let ret = rows[0][0].field;