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

调用MySQL存储过程出现Error Code:1222错误,寻求解决方案

解决MySQL存储过程的1222错误:SELECT语句列数不匹配

错误原因分析

你遇到的Error Code: 1222问题核心非常清晰:你的SELECT语句返回了2列数据,但INTO子句仅指定了1个变量来接收结果。

看你存储过程里的关键代码:

SELECT numpieza, count(numvend) into nvend from preciosum where numpieza like _piez;

这里SELECT同时查询了numpieza字段和聚合函数count(numvend),相当于返回两个结果列,但into nvend只给了一个变量nvend来接收数据——MySQL没办法把两列结果塞进一个变量里,所以直接抛出了「列数不匹配」的错误。

解决办法

根据你的调用逻辑(输出指定零件对应的供应商数量),你只需要保留聚合函数的结果即可,去掉多余的numpieza查询:

修改后的完整存储过程代码:

delimiter /
drop procedure if exists piez_vend;/
create procedure piez_vend (IN _piez varchar(20), out nvend int(11))
begin
    -- 仅查询count结果,与INTO的变量数量完全匹配
    SELECT count(numvend) into nvend from preciosum where numpieza like _piez;
end /
delimiter ;

如果你确实需要同时获取numpieza的值,那就要给存储过程新增一个输出变量来接收该字段,示例如下:

delimiter /
drop procedure if exists piez_vend;/
create procedure piez_vend (IN _piez varchar(20), out pieza varchar(20), out nvend int(11))
begin
    SELECT numpieza, count(numvend) into pieza, nvend from preciosum where numpieza like _piez;
end /
delimiter ;

-- 调用时需要传入两个输出变量
call piez_vend('dd-0001-210',@pieza,@nvend);

验证效果

用你提供的示例数据测试,调用call piez_vend('dd-0001-210',@nvend);后,@nvend会返回1,符合该零件仅一条供应商记录的实际情况。

内容的提问来源于stack exchange,提问作者Carmelo Ricarte Rocamora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:29:26