MYSQL数据库的存储过程基本语法和使用

前言

最新项目开发中,需要写存储过程。觉得有必要记录一下。因为开发需要,去学习的存储过程。

1. 储存过程的优缺点

优点
  1. 存储过程可封装,并隐藏复杂的商业逻辑。
  2. 存储过程可以回传值,并可以接受参数。
  3. 存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。
  4. 存储过程可以用在数据检验,强制实行商业逻辑等
缺点

1)存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。
2) 存储过程的性能调校与撰写,受限于各种数据库系统。

2. 基本语法

1) 创建储存过程

CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 …] 过程体

DELIMITER //
  CREATE PROCEDURE myproc(OUT s int)
    BEGIN
      SELECT COUNT(*) INTO s FROM students;
    END
    //
DELIMITER ;

DELIMITER(分割符)

MySQL默认以";“为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个”//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。

写一段样例 (不区分大小写)
这是一个 求 1+2+3+…+n 。写一个存储过程,并打印结果。

--- 代码1

 DELIMITER //
 CREATE PROCEDURE addresult()
 BEGIN
 DECLARE i INT;
 DECLARE sum INT;
 DECLARE n  INT;
 
 SET i=0;
 SET sum=0;
 
 WHILE i<= n DO
 SET sum=sum+i;
 SET i=i+1;
 END WHILE;
 SELECT sum;
 END
 // DELIMITER;
 
 -- 代码2  这个是调用写的储存过程,首先要执行以下代码1,才可以调用。
 call addresult;

MYSQL 存储过程中的关键语法

1、声明语句结束符,可以自定义:
DELIMITER $$
或
DELIMITER //
2、存储过程开始和结束符号:
BEGIN .... END 

3、变量赋值:
SET @p_in=1 

4、变量定义:
DECLARE l_int int unsigned default 4000000; 

5、创建mysql存储过程、存储函数:
create procedure 存储过程名(参数)

6、存储过程体:
create function 存储函数名(参数)

样例参考:
在这里插入图片描述

2)调用存储过程

1.基本语法:call sp_name()
注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

3)删除存储过程

1.基本语法:
drop procedure sp_name//

2.注意事项
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

4)常用查询操作

1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等

2.show create procedure sp_name
显示某一个mysql存储过程的详细信息

3、存储过程的查询

selectname from mysql.proc where db='数据库名';

或者

selectroutine_name from information_schema.routines where routine_schema='数据库名';

或者

showprocedure status where db='数据库名';

猜你喜欢

转载自blog.csdn.net/weixin_43975771/article/details/108821047
今日推荐