在创建 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;
总结:
查询时,查询结果的个数要与接收函数的个数相同。