SHOW CREATE PROCEDURE [数据库.]存储过程名; #查看某个存储过程的具体信息
SHOW CREATE PROCEDURE Proc;
SHOW PROCEDURE STATUS [LIKE '%Proc%'] \G
3.存储过程参数
in 传入参数 表示调用者向过程传入值(传入值可以是字面量或变量)
out 传出参数 表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
inout 传入传出参数 既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)
①传入参数(in)
DELIMITER $$
CREATE PROCEDURE Proc1(IN inname CHAR(16))
-> BEGIN
-> SELECT * FROM 表名 WHERE 表中字段 = 传入参数;
-> END $$
DELIMITER ;
CALL Proc1('字段值');
②传出参数(out)
delimiter $$
mysql> create procedure proc3(in 传入参数 char(10), out 传出参数 int)
-> begin
-> select 字段 into 传出参数 from 表名 where name = 传入参数;
-> end $$
delimiter ;
call proc3('传入参数', @传出参数);
select @传入参数;
③传入传出参数(inout)
delimiter $$
mysql> create procedure proc4(inout 传入传出参数 int)
-> begin
-> select 字段 into 传入传出参数 from 表名 where 条件判断;
-> end $$
delimiter ;
set @全局变量=值;
call proc4(@全局变量);
select @全局变量;
4.删除存储过程
存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。如果要修改存储过程的名称,可以先删除原存储过程,再以不同的命名创建新的存储过程。
DROP PROCEDURE IF EXISTS Proc; #仅当存在时删除,不添加 IF EXISTS 时,如果指定的过程不存在,则产生一个错误
5.存储过程的控制语句
①条件语句
delimiter $$
create procedure proc7(in input_age int)
begin
if 条件表达式 then
SQL语句序列
[else]
SQL语句序列
end if;
end $$
②循环语句
delimiter $$
create procedure proc7(in input_age int)
while 条件表达式 do
SQL语句序列
set 条件迭代方式
end while;
end $$
delimiter $$
create procedure proc9()
begin
declare i int;
set i = 1;
create table class28 (id int, name varchar(20));
while i <= 10000
do insert into class28 values (i, concat('student',i));
set i = i + 1;
end while;
end$$