数据库存储过程

Posted xiaoqiqistudy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库存储过程相关的知识,希望对你有一定的参考价值。

      记得在上一次的面试中,面试官问我什么是数据库的存储过程,我当时真的头脑一发热什么都不知道压根没有听过这个问题,我当时在想数据库还有存储过程吗?

其实数据库的存储过程类似java中的方法。就是把一些语句,逻辑封装到方法中用到的时候我们去调用就可以了。

好处:

1.提高了代码的重用性

2.简化操作

 

存储过程的含义:

一组预先编译好的sql语句集合,也可以理解成批处理语句,但是存储过程要比批处理要强大得多。

好处就是:减少了编译次数,减少了和数据库的连接次数,从而提高了效率。

1.空参列表

向admin表中插入2条记录

语法:

delimiter $      (设置结束标记)

create procedure myp1()

begin

insert into admin (字段,字段..)vaules (值,值...)

end  $

 

调用

call myp1() $

 

2.带in类型参数存储过程

案例1:创建存储过程实现 根据女神名,查询对应的男神信息

CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGIN
SELECT bo.*
FROM boys bo
RIGHT JOIN beauty b ON bo.id = b.boyfriend_id
WHERE b.name=beautyName;

END $

#调用
CALL myp2(‘柳岩‘)$

3.创建out 模式参数的存储过程

案例1:根据输入的女神名,返回对应的男神名

CREATE PROCEDURE myp6(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
BEGIN
SELECT bo.boyname INTO boyname
FROM boys bo
RIGHT JOIN
beauty b ON b.boyfriend_id = bo.id
WHERE b.name=beautyName ;

END $

#调用
CALL myp7(‘小昭‘,@name,@cp)$
SELECT @name,@cp$

 

4.创建带inout模式参数的存储过程

案例

1:传入a和b两个值,最终a和b都翻倍并返回

CREATE PROCEDURE myp8(INOUT a INT ,INOUT b INT)
BEGIN
SET a=a*2;
SET b=b*2;
END $

#调用
SET @m=10$
SET @n=20$
CALL myp8(@m,@n)$
SELECT @m,@n$

5.、删除存储过程

语法:drop procedure 存储过程名
DROP PROCEDURE p1;
DROP PROCEDURE p2,p3;#×

6、查看存储过程的信息

DESC myp2;×
SHOW CREATE PROCEDURE myp2;

 

以上是关于数据库存储过程的主要内容,如果未能解决你的问题,请参考以下文章

SQL存储过程如何调用存储过程?

存储过程在数据库中的作用是啥

为啥要使用存储过程?

存储过程调用存储过程的语法

MS sql如何使用存储过程?

sql存储过程有什么用