9.Oracl过程-函数和程序包.ppt

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

第九章 过程、函数和程序包 到目前为止,所创建的PL/SQL程序都是匿名的。这些匿名的程序块没有被存储,在每次执行后,都不可以被重新使用。因此,每次运行匿名程序块时,都需要先编译然后再执行。在很多时候,都需要保存PL/SQL程序块,以随后可以重新使用。这也意味着,程序块需要一个名称,这样在调用或引用它时,系统就可以找到这个特定的程序块。创建并命名的程序块称为“命名程序单元”或“子程序”。由于存储代码的位置、代码所执行的任务类型以及调用方式的不同,命名PL/SQL程序单元分为:存储过程、函数和程序包三种。 本章学习目标: 创建Oracle存储过程 调用存储过程 理解存储过程中各种形式的参数 修改存储过程 为过程添加局部变量和子过程 创建Oracle函数 调用Oracle函数 创建程序包 创建程序包的公有成员和私有成员 理解程序包中重载的过程和函数 理解程序单元之间的依赖性 9.1 存储过程 存储过程是一种命名PL/SQL程序块,它可以被赋予参数,存储在数据库中,可以被用户调用。由于存储过程是已经编译好的代码,所以在调用的时候不必再次进行编译,从而提高了程序的运行效率。另外,使用存储过程可以实现程序的模块化设计。 9.1.1 创建存储过程 语法结构: create [or replace] procedure 过程名 [(参数1 [{in|out|in out}数据类型,参数2…] { is | as } …---声明部分 begin …---执行部分 [exception …] ---出错处理部分 end [过程名]; 形式参数可以没有,或有多个。 形式参数的数据类型无须指明宽度。 形式参数有三种模式,in、out或in out,区别如下: in 模式表示输入参数,是默认模式,用于从调用环境向过程传递值。在过程中不能给in模式的参数赋值。 Out 模式表示输出参数,用于从过程中返回值给调用者。在过程内部不能使用此种参数,并且要给它赋值。调用时,要用一个变量代替这种参数,不能用常量或表达式。 In out 模式表示输入输出参数,既可以从调用者向过程传递值,执行完后还可返回改变的值给调用者。调用时,只能用变量代替这种参数,不能用常量或表达式。 9.1.2 存储过程的调用 存储过程创建之后,就可以任意调用该存储过程。在PL/SQL块中,存储过程可以直接调用,语法如下: [用户名.]过程名[(实参1,实参2,……)]; 如果调用数据库中其他用户创建的过程,要在过程前加用户名即是模式名,并且要有相应的权限,实际参数的数据类型要和过程形式参数一致,并且要符合相应模式的要求。 在SQL*PLUS中也可以用EXECUTE命令直接调 用,其形式如下: EXECUTE [用户名.]过程名[(实参1,实参2,……)]; 在其他oracle工具以及能访问oracle的编程语言中也都能调用存储过程。 创建一个不带参数的存储过程: 从emp表中找出30号部门人数和工资总和,并存入temp表中。 drop table temp; Create table temp(deptno number(2), count number(2), total_sal number(7,2)); Create or replace procedure proc1 is Vcount number(2); Vsal number(10,2); Begin select count(*),sum(sal) into vcount,vsal from emp where deptno=30; delete from temp; insert into temp values(30,vcount,vsal); End proc1; 上述命令在SQL*PLUS中之行后,就在数据库中建立 了一个名为proc1的存储过程,任何连接到数据库中 的用户,只要有权限就可以调用该过程。 可以在pl/sql块中调用: Begin proc1; End; 或者在SQL*PLUS中输入下列命令调用: Execute proc1; 创建一个带输入参数的存储过程: 使用参数的存储过程:从调用者接受部门号,在从emp表查出该部门的人数和工资总和,存入temp表。 Create or replace procedure proc2(vdeptno in number default 10) is Vcount number(2); Vsal number

文档评论(0)

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

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

1亿VIP精品文档

相关文档