oracle存储过程实例剖析.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
oracle存储过程实例剖析

Oracle存储过程实例 过程 过程就是高级程序设计语言中的模块的概念,将一些内部联系的命令组成一个个过程,通过参数在过程之间传递数据是模块化设计思想的重要内容. 存储过程特点 1)存储过程是预编译过的,并且经优化后存储于SQL内存中,使用时无需再次编译,提高了工作效率; 2)存储过程的代码直接存放于数据库中,一般由客户端直接通过存储过程的名字进行调用,减少了网络流量,加快了系统执行速度,例如在进行百万以上的大批量数据查询时,使用存储过程分页要比其他方式分页快得多; 3)使用存储过程可以减少SQL注入式攻击,提高了系统的安全性,执行存储过程的用户要具有一定的权限才能使用存储过程,没有数据操作权限的用户只能在其控制下间接地存取数据; 存储过程特点 4)在同时进行主、从表及多表间的数据维护及有效性验证时,使用存储过程比较方便,而且可以有效利用SQL中的事务处理的机制; 5)使用存储过程,可以实现存储过程设计和编码工作分开进行,只要将存储过程名、参数、及返回信息告诉编码人员即可; 6)但使用存储过程封装业务逻辑将限制应用程序的可移植性;另外,如果更改存储过程的参数或者其返回的数据及类型的话,需要修改应用程序的相关代码,比较繁琐。 过程的语法结构 完整的过程结构如下: create or replace procedure 过程名 as 声明语句段; begin 执行语句段; exception 异常处理语句段; end; 过程是有名称的程序块,as关键词代替了无名块的declare. 创建过程实例 创建名为stu_proc的过程,create是创建过程的标识符,replace表示若同名过程存在将覆盖原过程.该过程定义了一个变量,其类型和student数据表中的sname字段类型相同,都是字符型,将数据表中的sno字段为1的sname字段内容送入变量中,然后输出结果. 参数 SQL中调用存储过程语句: call?procedure_name(); 调用时”()”是不可少的,无论是有参数还是无参数。 定义对数据库过程的调用时 ???无参数过程:{?call?procedure_name} ???仅有输入参数的过程:{call?procedure_name(?,?...)} 这里?表示输入参数,创建存储过程时用in表示输入参数 ???仅有输出参数的过程:{?Call?procedure_name(?,?...)} 这里的?表示输出参数,创建存储过程时用out表示输入参数 ???既有输入参数又有输出参数的过程 {call?procedure_name(?,?...)} 这里的?有表示输出参数的,也有表示输入参数的?? 下面将会对这4种情况分别举出实例!!! 参数过程实例 无参数存储过程: create or replace procedure stu_proc as pname varchar2(25); begin select sname into pname from student where sno=1; dbms_output.put_line(pname); end; 或者 create or replace procedure stu_proc as pname student.sname%type; begin select sname into p_name from student where sno=1; dbms_output.put_line(pname); end; 参数过程实例 仅有输入参数的过程 create or replace procedure stu_proc1(pno in student.sno%type) as pname varchar2(25); begin select sname into pname from student where sno=pno; dbms_output.put_line(pname); end; 参数过程实例 仅有输出参数的存储过程 create or replace procedure stu_proc2(pname out student.sname%type) as begin select sname into pname from student where sno=1; dbms_output.put_line(pname); end; 此种存储过程不能直接用call来调用,这种情况的调用将在下面oracle函数调用中说明 参数过程实例 有输入\输出参数的存储过程: create or replace procedure stu_proc3 (pno in stu

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档