【问题标题】:error when I call procedure in mysql:Error Code: 1222. The used SELECT statements have a different number of columns当我在 mysql 中调用过程时出错:错误代码:1222。使用的 SELECT 语句具有不同的列数
【发布时间】:2018-05-05 17:04:14
【问题描述】:
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'

【问题讨论】:

  • 如果numpieza 与_piez 相似的多行会发生什么?

标签: mysql stored-procedures


【解决方案1】:

错误信息有点迟钝。

使用的 SELECT 语句的列数不同

表示这个查询

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

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

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

专业提示存储过程很难调试。在将它们包装到过程中之前尝试其中的查询会很有帮助。

【讨论】:

    猜你喜欢
    • 2021-08-11
    • 2015-01-21
    • 1970-01-01
    • 2018-01-06
    • 2020-04-16
    • 2021-04-15
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多