在创建 MySQL 存储过程报了一个这样的错,错误描述:
1222 - The used SELECT statements have a different number of columns
提示查询的列和目标列不一致
我的 SQL 语句是这样
DROP PROCEDURE Pfood_price_count;
DELIMITER //
CREATE PROCEDURE Pfood_price_count(IN price_info1 FLOAT,IN price_info2 FLOAT,OUT count INT)
BEGIN
SELECT COUNT(*), SUM(price) INTO count FROM food WHERE price BETWEEN price_info1 AND price_info2;
END;//
DELIMITER ;
CALL Pfood_price_count(2, 18, @cnt);
select @cnt;
经过探索发现,是查询出了两列数据,但是我只给了一个变量 count 接收,所以出现这个报错。将变量改为两个执行成功。
完成的 sql 语句长这样:
DELIMITER //
CREATE PROCEDURE Pfood_price_count(IN price_info1 FLOAT,IN price_info2 FLOAT,OUT count INT)
BEGIN
SELECT COUNT(*), SUM(price) INTO count,@sm FROM food WHERE price BETWEEN price_info1 AND price_info2;
END;//
DELIMITER ;
CALL Pfood_price_count(2, 18, @cnt);
select @cnt;
总结:
查询时,查询结果的个数要与接收函数的个数相同。
继续阅读与本文标签相同的文章
-
105道BAT最新Java面试题(MySQL+Redis+nginx+ookeeper+MongoDB)
2026-05-18栏目: 教程
-
增值税发票管理系统2.0版即将上线啦
2026-05-18栏目: 教程
-
楼上请让路 RoarCTF2019 writeup
2026-05-18栏目: 教程
-
恒泰聚能节电分享:人工智能开始发挥其节能潜力
2026-05-18栏目: 教程
-
CMU 15-721 16-服务器端的逻辑执行 Server -side Logic Execution
2026-05-18栏目: 教程
