实例教你用mysql存储过程

       很多面试都会问到存储过程,今天给大家介绍一下什么是mysql存储过程(需要MySQL 5 以及以后的版本支持存储过程),详细介绍存储过程的相关内容。

1. 什么是存储过程

      存储过程是为了以后的使用而保存在数据库中的sql语句,可能是一条或者是多条sql语句的集合,经过一次编译后就不需要再次编译,只需通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它,可以简单的认为是批文件,实际作用不仅仅是批处理。

2. 为什么需要使用存储过程

      此事就会有人问存储过程存在的意义是为了?存储过程主要的优点可以总结为简单、安全、高性能

简单:存储过程可以看做是将重复的操作语句进行封装起来,以后使用可以直接调用,大大简化了人员的工作量;

安全:存储过程可以管理员设定某些用户才能使用,确保了安全性;

高性能:一般的sql语句每次执行一次就会编译一次,但是存储过程只是在创造时候编译,以后调用时候不会再次执行编译,所以使用存储过程可提高数据库执行速度。

3. 如何创建存储过程

     存储过程分为有参数无参数两种,下面详细介绍。

  3.1无参数存储过程

     到了这里就该给大家介绍如何创建存储过程了。一般的创建存储过程的模板是:

 create  procedure porcedureName()

     begin

    ......

    end;

porcedureName是存储过程名称,可以自己根据需求修改,省略号处是自己将要执行的sql语。

简单举个,创建一个queryName的存储过程,查询user表中的用户名称:

create  procedure queryName()

begin

select name from user;

end;

3.2有参存储过程

      上述存储过程只是简单地查询用户名,但是并没有什么返回结果,一般的存储过程是根据传入的参数返回指定的结果,这就要使用带参数的存储过程了。

     存储过程参数需要指定其性质,IN 、OUT 这两个必须放在指定的参数前面申明参数的性质,在参数前面加IN是申明改参数是传入参数,将会在存储过程中使用,OUT是输出参数,存储过程的返回值需要指定对象来接收,下面用例子来说明:

CREATE PROCEDURE queryid(IN name CHAR(255),OUT queryid INT ) 
BEGIN
SELECT id from log_user where user_name= name INTO queryid;
END;

      上面存储过程是传入用户的名字查询用户的id,最后将id赋值给queryid;,IN name char(255)是输入查询的用户名,OUT queryid int 是返回queryid;

       存储过程的参数并不是指限定一个,可以是多个,类型也是可以更具自己的需求进行设定的。

4.调用存储过程

    当我们创建好存储过程,就是需要知道怎么去调用了,调用上面创建的第一个无参数的queryName存储过程:

call queryName();

调用有参存储过程queryid:

call queryid('admin',@queryid);
select @queryid;

此处admin是传入的参数,@queryid是接收参数,调用的时候需要加上@符号,第二句是展示查询的结果.

5.删除存储过程

DROP PROCEDURE queryName;
DROP PROCEDURE queryid;

删除以上的存储过程,还有一部分语句可以帮你查看存储过程

-- 查看存储过程状态
show procedure status;
--查看具体的创出过程状态
show create procedure 存储过程名称;

 

 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值