我在mysql中调用过程时出错:错误代码:1222。使用的SELECT语句具有不同的列数

时间:2018-05-05 17:04:15

标签: mysql stored-procedures

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

call piez_vend('dd-0001-210',@nvend);

示例数据

 numpieza, numvend, preciounit, diassum, descuento
'a-1001-l', '1', '1.60', '3', '0'
'a-1001-l', '3', '3.00', '1', '0'
'c-400-z', '1', '7.80', '4', '5'
'c-400-z', '6', '6.50', '3', '0'
'dd-0001-210', '1', '300.00', '3', '15'
'dd-0001-210', '2', '310.00', '5', '12'
'dd-0001-210', '4', '287.00', '15', '10'
'm-0001-c', '1', '550.00', '3', '10'
'm-0001-c', '5', '570.00', '7', '15'
't-0002-at', '2', '25.80', '3', '0'
't-0002-at', '4', '27.00', '5', '7'

1 个答案:

答案 0 :(得分:1)

错误信息有点迟钝。

  

使用的SELECT语句具有不同的列数

这意味着此查询

SELECT numpieza, count(numvend) into nvend from preci...

不起作用,因为SELECT提到了两列。但是您正在使用into告诉MySQL在哪里放置其中一列的值。它不知道如何处理其他列。试试这个。

SELECT count(numvend) into nvend from preci...

专业提示存储过程调试起来很棘手。在将它们包装到过程中之前,尝试查询它们会很有帮助。