mysql存储过程

1.创建存储过程语法

CREATE PROCEDURE 存储过程名 [(参数)]
begin
    --语句块
end;

2.创建无参存储过程

CREATE PROCEDURE db_pro()
begin
    SELECT * from person;
end;

--执行存储过程:
CALL db_pro();

3.创建输入参数存储过程:

CREATE PROCEDURE db_pro(IN p INT)
begin
    SELECT * from person WHERE id = p;
end;
SET @p=1;
--执行存储过程 CALL db_pro(
@p);

4.创建输出参数的存储过程

CREATE PROCEDURE db_pro(OUT out_p INT)
begin
    SELECT COUNT(*) INTO out_p from person;
    SELECT out_p; --如果不写在执行该存储过程讲无法显示输出结果
end;
CALL db_pro(@out_p);
--SELECT @out_p;  --也可以

5.创建inout输入参数的存储过程

CREATE PROCEDURE db_pro(INOUT inout_p INT)
begin
    SELECT COUNT(*) INTO inout_p from person WHERE id = inout_p;
    SELECT inout_p; --若不写将无法显示输出结果
end;
SET @p=1;
CALL db_pro(
@p);

6.删除存储过程

DROP PROCEDURE if exists 存储过程名;

7.修改存储过程

ALTER PROCEDURE 存储过程名

8.条件语句

CREATE PROCEDURE proc2(IN parameter int) 
begin
declare var int; 
set var=parameter+1; 
if var=0 then
insert into t values(17); 
end if; 
if parameter=0 then
update t set s1=s1+1; 
else
update t set s1=s1+2; 
end if; 
end;
------------------------------------------
DELIMITER // 
CREATE PROCEDURE proc3 (in parameter int) 
begin
declare var int; 
set var=parameter+1; 
case var 
when 0 then  
insert into t values(17); 
when 1 then  
insert into t values(18); 
else  
insert into t values(19); 
end case; 
end; 
//
DELIMITER ;

9.循环语句

DELIMITER // 
CREATE PROCEDURE proc4() 
begin
declare var int; 
set var=0; 
while var<6 do 
insert into t values(var); 
set var=var+1; 
end while; 
end; 
// 
DELIMITER ;
-- 它在执行操作后检查结果,而while则是执行前进行检查。

DELIMITER // 
CREATE PROCEDURE proc5 () 
begin  
declare v int; 
set v=0; 
repeat 
insert into t values(v); 
set v=v+1; 
until v>=5 
end repeat; 
end; 
// 
DELIMITER ; 

-- loop循环不需要初始条件,这点和while 循环相似,同时和repeat循环一样不需要结束条件, leave语句的意义是离开循环。
DELIMITER // 
CREATE PROCEDURE proc6 () 
begin
declare v int; 
set v=0; 
LOOP_LABLE:loop 
insert into t values(v); 
set v=v+1; 
if v >=5 then
leave LOOP_LABLE; 
end if; 
end loop; 
end; 
// 
DELIMITER ; 

 

 

 

 

posted on 2020-11-19 23:24  Difcipo  阅读(75)  评论(0编辑  收藏  举报

导航