MySQL进阶--数据库存储过程

存储过程

存储程序就是一行或者多行sql语句。 为以后的使用而保存的一条或多条MySQL语句的集合。
存储过程思想上就是数据库 SQL 语言层面的代码封装与重用

(一)存储过程的创建

存储过程和函数的构建,数据库提供了CREATE PROCEDURE和CREATE FUNCTION语法,创建的存储过程和函数可以在SQL语句中被调用执行,或者可以在其他的存储过程或者函数调用执行,本节内容先掌握基本的创建语法。

(1) 创建存储过程

CREATE  PROCEDURE proc_name存储过程的名字([proc_parameters])
BEGIN
	routing_body
END

• CRAETE PROCEDURE是创建存储过程的基本语法

• proc_name是创建的存储过程的名称

• proc_parameters是执行存储过程时的参数

​ [IN | OUT | INOUT]

​ IN:输入参数

​ OUT:输出参数

​ INOUT:输入或者输出参数

• routing_body是存储过程的执行体,将多个SQL语句包含在BEGIN…END之间,描述存储过程的功能主体

一个简单的存储过程

delimiter ;;
CREATE PROCEDURE avg_employee()
BEGIN
select avg(comm) from employee;
end;; 

备注:上述存储过程,是在命令提示符窗口中进行声明定义

• delimiter:设定Mysql的行结束符号,默认为;,默认情况下遇到分号时就会执行对应的SQL语句,在定义存储过程时,我们需要屏蔽分号带来的影响,这样才能在存储过程体中编写多行SQL而不会报错

• BEGIN:开始执行的存储过程

• END:存储过程的末行

此时我们重新修改结束符号并调用执行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MYOFmX80-1625578611999)(未命名.assets/wps6ZIfDM.jpg)]

构建一个带有参数的存储过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQvR0sPn-1625578612001)(未命名.assets/wps1KEfnX.jpg)]

调用并执行存储过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8xPhw5bg-1625578612003)(未命名.assets/wpsbESd18.jpg)]

了解局部变量:

DECLARE varName varType [DEFAULT defVal];

使用 DECLARE 关键字定义局部变量,变量名和变量类型是必须要指定的,默认值可选。

示例:

DELIMITER $$
CREATE PROCEDURE p_name()
   
    BEGIN
        DECLARE em VARCHAR(20);
        select name into em from employee where id=1;
    END$$

DELIMITER ;

查看所有存储过程

show procedure status;

删除存储过程

DROP PROCEDURE 名字;

你可能感兴趣的:(MySql,基础和进阶,数据库,python,mysql,sql)