You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js调用MySQL存储过程返回undefined问题排查

问题

使用Node.js、Express和MySQL开发时,创建的存储过程在MySQL Workbench中调用能返回正确结果,但在Node中调用返回undefined值。

存储过程代码:

DELIMITER //
CREATE PROCEDURE Read_Categories_SP()
BEGIN
    SELECT CategoryID, CategoryName
    FROM Categories
    ORDER BY CategoryName;
END //
DELIMITER ;

在MySQL Workbench中执行该过程得到结果:

2 ARIA
1 IT
3 Workshop

Node中的调用代码:

// 此代码无效
const [result1] = await mysqldb.pool.query('CALL Read_Categories_SP');

// 此代码有效
const [result2] = await mysqldb.pool.query('SELECT * FROM Categories');

请问哪里操作出错了?

解决办法

问题出在存储过程的调用语法上——你写的CALL Read_Categories_SP缺少了括号,MySQL要求存储过程调用必须带括号,哪怕没有参数。

修正后的Node调用代码:

const [result1] = await mysqldb.pool.query('CALL Read_Categories_SP()');

另外,使用mysql2库调用存储过程时,返回的结果是嵌套数组结构,需要进一步解析才能拿到实际查询数据:

const [results] = await mysqldb.pool.query('CALL Read_Categories_SP()');
const categories = results[0]; // 这里才是存储过程返回的查询结果集

内容的提问来源于stack exchange,提问作者kbdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:28:13