navicat for mysql创的存储过程没有返回值,调用了,查询的时候没有返回值

delimiter $$
CREATE PROCEDURE TEST(OUTnumber1 INTEGER)
BEGIN
DECLARE number2 INTEGER;
SET number2=(SELECT COUNT(*)FROM student);
SET number1=number2;
END $$
delimiter
调用:call test(@number)
查询:select @number

第1个回答  2012-11-23
朋友,首先这句话不能这样写,正确的方式:
SET number2=(SELECT COUNT(*)FROM student);
其次,CREATE PROCEDURE TEST(OUTnumber1 INTEGER) 中OUTnumber1中间没空格隔开
最后call test(@number),括号问题,中文情况下输入。可能是文本复制后的原因吧

正确的存储过程已写好,测试过:
drop PROCEDURE IF EXISTS TEST;
delimiter &&
CREATE PROCEDURE TEST(OUT number1 INTEGER)
BEGIN
DECLARE number2 INTEGER;
SELECT COUNT(*) into number2 FROM student;
set number1 = number2;
END &&
delimiter ;
call test(@number);
select @number;

希望对你有帮助本回答被提问者采纳
相似回答