mysql - 当我在 mysql 中调用过程时出错:错误代码:1222。使用的 SELECT 语句具有不同的列数
问题描述
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'
解决方案
错误信息有点迟钝。
使用的 SELECT 语句具有不同的列数
这意味着这个查询
SELECT numpieza, count(numvend) into nvend from preci...
不起作用,因为SELECT
提到了两列。但是你into
用来告诉 MySQL 把其中一列的值放在哪里。它不知道如何处理另一列。试试这个。
SELECT count(numvend) into nvend from preci...
专业提示存储过程很难调试。在将它们包装到过程中之前尝试其中的查询会很有帮助。
推荐阅读
- javafx - 校对请求:没有红色下划线的代码,但如果我尝试显示 LineChart,则会收到错误消息。有人可以检查一下吗?
- amazon-web-services - 为 AWS Fargate 配置应用程序端口
- javascript - clone() 生成动态行但具有相同的 id 和 name
- android-databinding - Data Binding 多模块项目中没有这样的方法和字段错误
- javascript - laravel中codeigniter row_array的等价物是什么?
- python - 在与 python 的电报机器人对话期间触发消息,在超时之前
- javascript - 输入后按下提交按钮时的未定义值
- html - 无法选中一个复选框,在我仅选中表中的一个复选框后选中所有复选框
- javascript - Firebase Cloud Function中的Mailgun通过触发一次发送多次
- arrays - tkinter 在操作数组?