具体不知道什么原因导致的,在mysql到8.0版本之后存储过程按照教程来创建一直报错,无奈只有亲自测试。
版本情况:
navicat Premium:12
mysql:8.012
按照图中的格式是可以创建成功的。
delimiter //
CREATE DEFINER=`root`@`localhost` PROCEDURE `numadd`(IN `n` INT)
begin
declare i int;
declare sum int;
set i=1;
set sum=0;
WHILE i<=n DO
set sum = sum +i;
set i=i+1;
END WHILE;
select sum;
end
//
delimiter ;
call numadd(50);
基本没有变化,只有在CREATE DEFINER=root
@%
PROCEDURE numadd
(IN n
INT) 这句话上面变了很多。
DEFINER=root
@%
这句话是mysql的其中一个用户,可去mysql的user列表去查。
navicat里面也可以查到,具体是在自带的几个数据库下的mysql下,一般最后一张表user打开即可看到。具体什么原因搞不懂。
此外还可以利用navicat上面提供的函数来创建,选择存储之后。选择参数,如果可以最好早添加参数的页面指定好参数的类型长度。例如下面指定好name的varchar长度为50。