函数与存储过程创建时候的问题

1.创建的函数无法保存

eg:

DROP FUNCTION IF EXISTS `insert_note`;

CREATE DEFINER = `root`@`localhost` FUNCTION `insert_note`(`my_id` varchar(50),`my_title` varchar(50),`my_content` varchar(255))
 RETURNS varchar
BEGIN
INSERT INTO note VALUES(my_id,my_title,my_content);
RETURN LAST_INSERT_ID();

END;

保存时提示:



这个主要是因为:创建时候没有指定入参与返回参数的大小,指定好就可以啦,可以直接在查询窗口通过select操作



2.存储函数无法调用,或无法查出查返回值

DROP PROCEDURE IF EXISTS `test_pro`;
CREATE DEFINER = `root`@`localhost` PROCEDURE `test_pro`(IN `a` int,IN `b` int,OUT `c` int,OUT `d` int)
BEGIN
SELECT a+b, a-b INTO c,d from dual;

END;

调用时,OUT参数必须用变量传入

call test_pro(3,4,@c,@d);

然后通过

select @c,@d;  查询对应数值;变量值仅在当前会话可查,即使保存查询然后关闭再打开也还是查不出

注:存储过程对变量复值 := 与 = 的区别

set 赋值时两种方式都可以   set @a = 1; set @a := 1;

:= 主要用于selcet    select @c:=a+b



猜你喜欢

转载自blog.csdn.net/a1454635626/article/details/80706387