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;

posted @ 2020-03-11 16:08  桑底坡  阅读(722)  评论(0编辑  收藏  举报