存储过程 --- 1 --- 简介

过程:过程就是高级程序设计语言中的模块的概念,将一些内部联系的命令组成一个个过程,通过参数在过程之间传递数据是模块化设计思想的重要内容。
存储过程说白了就是一堆 SQL 的合并。中间加了点逻辑控制。
但是存储过程处理比较复杂的业务时比较实用。
比如说,一个复杂的数据操作。如果你在前台处理的话。可能会涉及到多次数据库连接。但如果你用存储过程的话。就只有一次。从响应时间上来说有优势。
也就是说存储过程可以给我们带来运行效率提高的好处。
另外,程序容易出现 BUG 数据量小的,或者和钱没关系的项目不用存储过程也可以正常运作。mysql 的存储过程还有待实际测试。
如果是正式项目,建议你用 sql server 或 oracle 的存储过程。数据与数据之间打交道的话,过程会比程序来的快的多。
存储过程的特点:
    1.存储过程是预编译过的,并且经优化后存储与SQL内存中,使用时无需再次编译,提高了工作效率;
    2.存储过程的代码直接存放于数据库中,一般由客户端直接通过存储过程的名字进行调用,减少了网络流量,加快了系统执行速度,例如在进行百万以上的大批量数据查询时,使用存储过程分页要比其他方式分页快得多;
    3.使用存储过程可以减少SQL注入式攻击,提高了系统的安全性,执行存储过程的用户要具有一定的权限才能使用存储过程,没有数据操作权限的用户只能在其控制下间接的存取数据;
    4.在同时进行主、从表及多表间的数据维护及有效性验证时,使用存储过程比较方便,而且可以有效利用SQL中的事务处理的机制;
    5.使用存储过程,可以实现存储过程设计和编码工作分开进行,只有将存储过程名、参数、返回信息告诉编码人员即可;
存储过程的缺点
    1:调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。   
    2:移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。   
    3:重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。
    4:如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的。维护起来更加麻烦!
存储过程的语法结构
完成的过程结构如下:
         create or replace procedure 过程名 as
                声明语句段;
         begin
                执行语句段;
         exception
                异常处理语句段;
         end;
   过程是有名称的程序块,as关键词代替了无名块的declare。
SQL中调用存储过程语句:
         call procedure_name();
调用时“()”是不可少的,无论是有参数还是无参数。
定义对数据库过程的调用时
     1.无参数存储过程:{call procedure_name}
     2.仅有输入参数的存储过程:{call procedure_name(?,?...)}
           这里?表示输入参数,创建存储过程时用in表示输入参数
     3.仅有输出参数的存储过程:{call procedure_name(?,?...)}
           这里?表示输出参数,创建存储过程时用out表示输出参数
     4.既有输入参数又有输出参数的存储过程:{call procedure_name(?,?...)}

           这里?表示输入输出参数

希望对你有帮助,祝你有一个好心情,加油!

若有错误、不全、可优化的点,欢迎纠正与补充!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值