什么是mysql存储过程_mysql 存储过程

存储过程

1.什么是存储过程

一组可编程函数,是为了满足特定功能的SQL语句集

存储过程就是具有名字的一段代码,用来完成个特定的功能

创建的存储过程保存在数据库的数据字典中

2.为什么要用存储过程

将重复性很高的操作,封装到一个存储过程中,简化了对这些SQL的调用

批量处理

统一接口,确保数据安全

相对于Oracle来说,Mysql的存储过程相对功能较弱,使用较少

3.存储过程的创建和调用

1. delimiter$$

他与存储过程无关

delimiter$$ 将标准分隔符 - 分号 ( 更改为 两个 $

将存储过程作为整体,而不是一次解释每条语句

告诉mysql解释器,该段命令已经结束了。默认情况下,delimiter 是分号,在命令行客户端中,如果有一行命令以分号结束,回车后,mysql将会执行该命令。如果不希望这样,就可以 delimiter$$ ,这样只有在 $$出现后,mysql解释器才会执行 这段语句

什么是mysql存储过程_mysql 存储过程_第1张图片

2.创建和调用存储过程

# 创建存储过程

CREATE PROCEDURE 名称()

BEGIN

语句

END$$

# 调用存储过程

CALL 名称()

如图:

什么是mysql存储过程_mysql 存储过程_第2张图片

右击鼠标 运行已选择的

然后运行CALL show_content() 这句,就会得到执行结果。

将查询窗口关闭,重新打开一个新的查询窗口,可以直接使用 CALL show_content ,即可执行得到结果

什么是mysql存储过程_mysql 存储过程_第3张图片

3.查看存储过程

查看所有存储过程: SHOW PROCEDURE STATUS;

查看指定数据库中的存储过程: SHOW PROCEDURE STATUS WHERE DB = 'publiccms';

什么是mysql存储过程_mysql 存储过程_第4张图片

查看指定存储过程源码 : SHOW CREATE PROCEDURE show_emp;

删除指定存储过程: DROP PROCEDURE show_emp;

4.存储过程变量

delimiter $$

CREATE PROCEDURE test()

BEGIN

-- 声明变量,默认为空

DECLARE res VARCHAR(255) DEFAULT '';

DELETE x,y int DEFAULT 0 -- 声明两个变量,类型为int ,默认为 0

-- 赋值 set 方式

set x = 3;

set y = 4;

DECLARE avgRes DOUBLE DEFAULT 0;

-- 另一种赋值方式 into 方式

select avg(salary) into avgRes from emp

end$$

-- 什么的变量,如 x,y等,只能在 begin end 之间有效

5.存储过程参数传递

in

-- 根据传入的名称,获取对应的信息

delimiter $$

create PROCEDURE getName(in name VARCHAR(255))

BEGIN

SELECT * FROM emp where ename = name;

end$$

delimiter ;

CALL getName('鲁班')

什么是mysql存储过程_mysql 存储过程_第5张图片

out

-- 传入姓名,得出薪水

delimiter $$

create procedure getSalary(in name varchar(255),out money int)

BEGIN

select salary into money from emp where ename = name;

end$$

delimiter ;

CALL getSalary('李白',@s) -- @s 代表返回的数

select @s; -- 也可以写为 select @s from DUAL

-- DUAL 是一个虚拟的表

什么是mysql存储过程_mysql 存储过程_第6张图片

inout 既是输入,又是输出

delimiter $$

create procedure test(inout num int,in inc int) -- inout ,既是输入,也是输出

BEGIN

set num = num + inc;

end$$

delimiter ;

set @num1 = 20; -- @ 代表地址传递

CALL test(@num1, 10);

select @num1;

什么是mysql存储过程_mysql 存储过程_第7张图片

你可能感兴趣的:(什么是mysql存储过程)