存储过程

1、创建

create procedure procedure_name(IN/OUT args)

begin

sql

end

示例:

create procedure proce_test1(IN a int,IN b int,OUT c int)

begin

SET c=a+b;

end;

2、调用

set @m=0;

call proce_test1(3,2,@m);

显示变量的值:select @m from dual;

3、存储过程中变量的使用

(1)局部变量:定义在存储过程开始定义,只在存储过程中有效

create procedure proce_test2(IN a int,OUT r int)

begin

declare x int default 0;

declare y int default 1;

set x= a*a;

set y= a*a;

set r =x+y;

end;

(2)用户变量:相当于全局变量,定义的用户变量可以通过select @attrname from dual;

(3)给变量设置值

无论是局部变量还是用户变量,都是使用set关键字修改值

set @n=1;

call proce_test2(6,@n);

select @n from dual;

4、将查询结果赋值给变量

create procedure proce_test3(OUT c int)

begin

select count(stu_num) into c from student;

end;

set @n=1;

call proce_test3(@n);

select @n from dual;

5、用户变量使用注意事项:因为用户变量相当于全局变量,可以在SQL指令以及多个存储过程中共享,在开发中建议少使用用户变量,用户变量过多会导致程序不易理解,难以维护。

6、存储过程中的参数:IN OUT INOUT

IN输入参数,如

OUT输出参数

INOUT 输入输出参数

7、存储过程中流程控制

(1)if

单分支

if conditions then

--sql

end if;

双分支

if conditions then

--sql

else

--sql

end if;

(2)case

create procedure proce_test8(IN c int)

begin

case a int

when 1 then

--sql

when 2 then

--sql

else

--sql3

end case;

end;

存储过程管理

(1)根据数据库名,查询当前数据库中的存储过程

show procedure status where db='db_test2';

(2)查询存储过程的创建细节

show create procedure db_test2.proc_test2;

(3)修改存储过程,指修改特征/特性

NO SQL子程序包含SQL语句,不包含读写语句

CONTAINS SQL子程序不包含SQL语句

READS SQL DATA子程序包含读数据的语句

MODIFIES SQL DATA 子程序包含写数据的语句

SQL SECURITY 指明谁有权限来执行

COMMENT "string" 标识注释信息

(4)删除存储过程

drop procedure proc_test2

posted @ 2022-04-13 10:35  佳期如梦_Lillian  阅读(31)  评论(0)    收藏  举报