赠oracle开发剑破冰山-全第10课oradevprev_第1页
赠oracle开发剑破冰山-全第10课oradevprev_第2页
赠oracle开发剑破冰山-全第10课oradevprev_第3页
赠oracle开发剑破冰山-全第10课oradevprev_第4页
赠oracle开发剑破冰山-全第10课oradevprev_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

剑破冰山之Oracle开发第10DATAGURU

2013法【】和幻灯片为炼数成金网络课程的教程以外范围散播,违者将可能被法律和经济 2013DATAGURU专业数据分 函数、过程和2013DATAGURU专业数据分 PL/SQL函数和过2013DATAGURU专业数据分 PL/SQL函数和过程--概函数和过程都是子程子程序是具名模块更容易的应用设 性可打包可重用更好的性2013DATAGURU专业数据分 PL/SQL函数和过程--定CREATE[ORREPLACE]FUNCTIONfunc_name[([para1type1,[para2RETURNdatatypeISCREATE[ORREPLACE]PROCEDUREproc_name[([para1type1,[para2ISFUNCTION头部有RETURN,PROCEDURE没func_declare里如果没有一个统一的RETURN,那么每个执行分支上都必须有RETURN,而在proc_declare中RETURN是可选的,并且是不建议使用的简单比喻: 块的DECLARE关键字去掉后,剩余部分就可当作proc_declare,加RETURN后,就算2013DATAGURU专业数据分 PL/SQL函数和过程--调subprogram_name[([parameter[,parameter]...])如果子程序没参数,那么调用的时候可函数可以出现在SELECT、INSERT、UPDATE、DELETE函数和过程可在PL/SQL中被调sqlplus执行过程的简洁写法(最后的分号可加可不加execproc_name[([parameter[,parameter]...])2013DATAGURU专业数据分 PL/SQL函数和过程--参模式:IN、OUT、INsubprogram_name[([parameter[,parameter]...])传参方式:Byreference/ByNOCOPY关键字指定按Byreference方式传位置式,混合式:subprog(a,bpara5=>e,para3=>c2013DATAGURU专业数据分 PL/SQL函数和过程--示Demo1根据三角形的三边长返回其面Demo2根据雇员ID返回其所在部门的Demo3返回一个由大小写字母组成的,长度为6~10位的随机字符Demo4根据指定参数输 那契数列对应项上的数Demo5根据三角形两边及其夹角度数,计算并输出三角形的周长和Demo6为指定dept_no的部门的雇员增加20%的薪水,并输出被增加薪水的人Demo7列出指定日期(默认为当前日期)所在月份的所有日2013DATAGURU专业数据分 PL/SQL函数和过程--副作自身的OUT、INOUT参全局变量或包里的公共变一张数据库的数据外部状态(例如调用DBMS_OUTPUT等2013DATAGURU专业数据分 PL/SQL函数和过11g2013DATAGURU专业数据分 PL/SQL函数和过该选项告诉优化器,当传入相同参数的时候,此函数总是返回相同的当返回值依赖于会话变量或方案(schema)对象等情形时,不要指定DETERMINISTIC选,但可以考虑RESULT_CACHE选函数索引或者某些物化视图中所用到的函数,必须是DETERMINISTIC启CREATE[ORREPLACE]FUNCTIONfunc_name[([para1type1,[para2RETURNDETERMINISTICIS2013DATAGURU专业数据分 PL/SQL函数和过原理及机优2013DATAGURU专业数据分 PL/SQL函数和过启CREATE[ORREPLACE]FUNCTIONfunc_name[([para1type1,[para2RETURN哪些情况会导致启用了结果缓存的函数在调用的时候不从缓存中取而是运行函数缓存结果2013DATAGURU专业数据分 PL/SQL函数和过参数和返回值限不能有OUTINOUT型推荐满足下列条件的函数才可使用RESULT_CACHE选不依赖于会话特定的设定(例如不依赖于会话特定的应用程序上下文(例如2013DATAGURU专业数据分 PL/SQL函数和过缓存略提交后,缓存状态设为回滚后,缓存状态设为2013DATAGURU专业数据分 PL/SQL函数和过解决办法:用DBMS_RESULT_CACHE(默认DBA可运行//2013DATAGURU专业数据分 PL/SQL函数和过递归函数的结果缓2013DATAGURU专业数据分 PL/SQL2013DATAGURU专业数据分 PL/SQL包--概将逻辑上相关联的PL/SQL类型、变量常量、子程序、游标和异常等封装在一可以将一个包看作是一个小型的应用程模块更容易的应用设私有信息隐公开变量可在整个会话期间为所有的子程序所共更好的性2013DATAGURU专业数据分 PL/SQL包--定可只定义常量变若定义了游标、子程序,则一定要在包体中实可实现子程序重可以包含包头中未定义的常量变量、游标、子程序等,但在包外不可调用到这些内包头重新编译后,包体会变成invalid,需做对应修改后再次编译,包体状态才会变为包体重新编译后,包头不会变成2013DATAGURU专业数据分 PL/SQL包--示Demo8三角形面积和周长的2013DATAGURU专业数据分 PL/SQL包--编写指逐渐熟悉Oracle提供的包,勿重复造车尽可能通用,以便于将来可复先设计包头再开发包包头只定义外部必须要调用的变量、子程序在包 公开游标后,要在包体中定义在包体的初始化部分为变量赋予初值,而不是在包 的时候赋予初2013DATAGURU专业数据分 游游2013DATAGURU专业数据分 游标--隐式游2013DATAGURU专业数据分 游标--隐式游由PL/SQL自动创建与管为SELECTINTO或DML语也叫做SQL游2013DATAGURU专业数据分 游标--隐式游其他情况为2013DATAGURU专业数据分 游标--隐式游2013DATAGURU专业数据分 游标--隐式游deletefromempwhereIFSQL%FOUNDTHENDBMS_OUTPUT.PUT_LINE('DeleteoneEND/2013DATAGURU专业数据分 游标--显式游2013DATAGURU专业数据分 游标--显式游由人工创建管理,因此需要给取无法给显式游标赋值,但可以将其用于表达式、参数等也叫做命名游:CURSORcursor_name[parameter_list]RETURN定义:CURSORcursor_nameparameter_listRETURNreturn_typeIS2013DATAGURU专业数据分 游标--显式游打开OPEN获取关闭2013DATAGURU专业数据分 游标--显式游无变量无参数的游CURSORcur1ISselectempno,ename,salfromempwhere带变量的游nCURSORcur2ISselectempno,ename,sal*nnewsalfromempwhere带参数的游CURSORcur3(dnonumber)ISselectempno,ename,salfromempwhere2013DATAGURU专业数据分 游标--显式游其他情况为其他情况为2013DATAGURU专业数据分 游标--显式游2013DATAGURU专业数据分 游标--显式游带变量的游nCURSORcur2ISselectename,sal,sal*nnewsalfromempwherecopenfetchcur2intoexitwhenendclose/

2013DATAGURU专业数据分 游标--显式游带参数的游CURSORcur3(dnonumber)ISselectename,salfromempwherecopenfetchcur3intoexitwhenendclose/

2013DATAGURU专业数据分 游标--显式游带参数的游标(forCURSORcur3(dnonumber)ISselectename,salfromempwhereforcin end/2013DATAGURU专业数据分 认真与专2013DATAGURU专业数据分 ata(是业数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论