ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql存储过程

2020-11-19 23:34:09  阅读:384  来源: 互联网

标签:存储 end -- CREATE begin mysql 过程 PROCEDURE


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 ; 

 

 

 

 

标签:存储,end,--,CREATE,begin,mysql,过程,PROCEDURE
来源: https://www.cnblogs.com/Difcipo/p/14008638.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有