- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle数据库数据对象分析 下
Oracle数据库数据对象分析 下
过程和函数
过程和函数都以编译后的形式存放在数据库中,函数可以没有参数也可以有多个参数并有一个返回值。过程有零个或多个参数,没有返回值。函数和过程都可以通过参数列表接收或返回零个或多个值,函数和过程的主要区别不在于返回值,而在于他们的调用方式。过程是作为一个独立执行语句调用的:
pay_involume(invoice_nbr,30,due_date);
函数以合法的表达式的方式调用:
order_volumn:=open_orders(SYSDATE,30);
创建过程的语法如下:
CREATE[OR REPLACE]PROCEDURE[schema.]procedure_name
[parameter_lister]
{AS|IS}
declaration_section BEGIN executable_section
[EXCEPTION exception_section]
END[procedure_name]
每个参数的语法如下:
paramter_name mode datatype[(:=|DEFAULT)value]
mode有三种形式:IN、OUT、INOUT。
IN表示在调用过程的时候,实际参数的取值被传递给该过程,形式参数被认为是只读的,当过程结束时,控制会返回控制环境,实际参数的值不会改变。
OUT在调用过程时实际参数的取值都将被忽略,在过程内部形式参数只能是被赋值,而不能从中读取数据,在过程结束后形式参数的内容将被赋予实际参数。
INOUT这种模式是IN和OUT的组合;在过程内部实际参数的值会传递给形式参数,形势参数的值可读也可写,过程结束后,形势参数的值将赋予实际参数。
创建函数的语法和过程的语法基本相同,唯一的区别在于函数有RETUREN子句
CREATE[OR REPLACE]FINCTION[schema.]function_name
[parameter_list]
RETURN returning_datatype
{AS|IS}
declaration_section BEGIN executable_section
[EXCEPTION]
exception_section END[procedure_name]
在执行部分函数必须有哟个或多个return语句。
在创建函数中可以调用单行函数和组函数,例如:
CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER)
RETURN NUMBER IS pi NUMBER=ACOS(-1);
RadiansPerDegree NUMBER;
BEGIN RadiansPerDegree=pi/180;
RETURN(SIN(DegreesIn*RadiansPerDegree));
END
包
包是一种将过程、函数和数据结构捆绑在一起的容器;包由两个部分组成:外部可视包规范,包括函数头,过程头,和外部可视数据结构;另一部分是包主体(package body),包主体包含了所有被捆绑的过程和函数的声明、执行、异常处理部分。
打包的PL/SQL程序和没有打包的有很大的差异,包数据在用户的整个会话期间都一直存在,当用户获得包的执行授权时,就等于获得包规范中的所有程序和数据结构的权限。但不能只对包中的某一个函数或过程进行授权。包可以重载过程和函数,在包内可以用同一个名字声明多个程序,在运行时根据参数的数目和数据类型调用正确的程序。
创建包必须首先创建包规范,创建包规范的语法如下:
CREATE[OR REPLACE]PACKAGE package_name
{AS|IS}
public_variable_declarations|
public_type_declarations|
public_exception_declarations|
public_cursor_declarations|
function_declarations|
procedure_specifications END[package_name]
创建包主体使用CREATE PACKAGE BODY语句:
CREATE[OR REPLACE]PACKAGE BODY package_name
{AS|IS}
private_variable_declarations|
private_type_declarations|
private_exception_declarations|
private_cursor_declarations|
function_declarations|
procedure_specifications END[package_name]
私有
您可能关注的文档
最近下载
- 期货高手策略分析报告.pptx VIP
- 腹腔镜下远端胃癌根治术(精品).pptx VIP
- __主题__:地铁站务员岗位面试常见问题及参考回答,包括求职动机、日常工作内容、核心素质、过往经验、倒班制度、实际情况与预期不符等方面,以及服务意识与沟通能力、安全管理与应急处置等各类具体场景下的应对措施和考察点.docx VIP
- 期货交易技巧与策略.pptx VIP
- 学堂在线R语言数据分析考试答案.docx VIP
- 如何当好一名管理者.pptx VIP
- 项目四、项目投资管理实务.ppt VIP
- 干细胞与糖尿病课件.pptx VIP
- 消毒供应中心工人规范岗前培训的应用效果.doc VIP
- 渡槽拆除方案终极版.doc VIP
原创力文档


文档评论(0)