码迷,mamicode.com
首页 > 数据库 > 详细

数据库存储过程

时间:2020-04-01 01:01:08      阅读:44      评论:0      收藏:0      [点我收藏+]

标签:效率   sele   发热   提高   begin   HERE   name   into   数据库   

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

其实数据库的存储过程类似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;

 

数据库存储过程

标签:效率   sele   发热   提高   begin   HERE   name   into   数据库   

原文地址:https://www.cnblogs.com/xiaoqiqistudy/p/12609625.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!