[进阶]MySQL学习笔记十一存储过程

来源:互联网 发布:php bug管理系统 编辑:程序博客网 时间:2024/05/11 09:48
   概念:
     存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过制定存储过程的名字并给出参数来执行它。存储过程是数据库的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
     存储过程的优点:
  • 重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
  • 提高性能。存储过程在创建的时候进行了变异,将来使用的时候不再重新变异。一般的SQL语句每执行一次就需重新编译一次,所以使用存储过程提高了效率。
  • 减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
  • 安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以讲Grant、Deny以及Revoke权限应用于存储过程。
     存储过程的缺点:
  • 调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。
  • 移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。
  • 重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。
  • 如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。
     (以上引用自:百度百科)

     动手实践:
     1. 创建数据表tbOrders(订单表)
    
     2. 创建存储过程
    
     3. 调用存储过程
    

     扩展:
  • 查看存储过程创建:show create procedure pGetFirstOrderCustomer;
  • 删除存储过程:dorp procedure pGetFirstOrderCustomer;
  • IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
  • OUT 输出参数:该值可在存储过程内部被改变,并可返回
  • INOUT 输入输出参数:调用时指定,并且可被改变和返回
0 0
原创粉丝点击