七讲子程序和程序包ppt课件_第1页
七讲子程序和程序包ppt课件_第2页
七讲子程序和程序包ppt课件_第3页
七讲子程序和程序包ppt课件_第4页
七讲子程序和程序包ppt课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、第七章第七章子程序和程序包2回顾 游标用于处理查询结果集中的数据 游标类型有:隐式游标、显式游标和 ref 游标 隐式游标由 pl/sql 自动定义、打开和关闭 显式游标用于处理返回多行的查询 显式游标可以删除和更新活动集中的行 要处理结果集中所有记录时,可使用循环游标 在声明 ref 游标时,不需要将 select 语句与 其关联3目标 创建和使用子程序 (重点) - 创建和使用程序包(重点)4专业英语 package包裹, 包 body身体,人,尸体,主要部分, 大量 pragmatic国事的, 团体事务的, 实际的 autonomous 自治的 transaction 处理, 会报, 交

2、易, 事务, 处理事务5子程序 2-1 命名的 pl/sql 块,编译并存储在数据库中。 子程序的各个部分: 声明部分 可执行部分 异常处理部分(可选) 子程序的分类: 过程 执行某些操作 函数 执行操作并返回值6子程序 2-2子程序的优点: 模块化 将程序分解为逻辑模块 可重用性 可以被任意数目的程序调用 可维护性 简化维护操作 安全性 通过设置权限,使数据更安全7过程 8-1 过程是用于完成特定任务的子程序 例如:前往售票厅询问关于车票的信息 排队等候 在柜台购买车票 8过程 8-2创建过程的语法:create or replace procedure ()is|as begin exce

3、ption end;创建过程,可指定运行过程需传递的参数处理异常 包括在过程中要执行的语句 9过程 8-3create or replace procedure find_emp(emp_no number)as empname varchar2(20);begin select ename into empname from emp where empno = emp_no; dbms_output.put_line(雇员姓名是 | empname);exception when no_data_found then dbms_output.put_line (雇员编号未找到);end fi

4、nd_emp;/10过程 8-4过程参数的三种模式: in 用于接受调用程序的值 默认的参数模式 out 用于向调用程序返回值 in out 用于接受调用程序的值,并向调用程序返回更新的值11过程 8-5sql create or replace procedure itemdesc(item_code in varchar2)is v_itemdesc varchar2(5);begin select itemdesc into v_itemdesc from itemfile where itemcode = item_code; dbms_output.put_line(item_cod

5、e| 项目的说明为|v_itemdesc);end;/sql set serveroutput onsql execute itemdesc(i201);执行过程的语法: execute procedure_name(parameters_list);12过程 8-6sql create or replace procedure test( value1 in varchar2, value2 out number )is identity number;begin select itemrate into identity from itemfile where itemcode = val

6、ue1; if identity set serverout onsql declare num1 number := 100; num2 number := 200;begin swap(num1, num2); dbms_output.put_line(num1 = | num1); dbms_output.put_line(num2 = | num2);end;/14过程 8-8 将过程的执行权限授予其他用户: 删除过程:sql grant execute on find_emp to martin;sql grant execute on swap to public;sql drop

7、 procedure find_emp;15函数 4-1 函数是可以返回值的命名的 pl/sql 子程序。 创建函数的语法: create or replace function (param1,param2)return is|as local declarationsbegin executable statements; return result;exception exception handlers;end;16函数 4-2q定义函数的限制:q函数只能接受 in 参数,而不能接受 in out 或 out 参数q形参不能是 pl/sql 类型q函数的返回类型也必须是数据库类型q访问

8、函数的两种方式:q使用 pl/sql 块q使用 sql 语句17函数 4-3 创建函数: 从 sql 语句调用函数:create or replace function fun_hello return varchar2isbegin return 朋友,您好;end;/sql select fun_hello from dual;18函数 4-4create or replace function item_price_range (price number) return varchar2 as min_price number; max_price number;begin select

9、 max(itemrate), min(itemrate) into max_price, min_price from itemfile; if price = min_price and price create or replace package cur_pack is cursor ord_cur(vcode varchar2) return order_master%rowtype; procedure ord_pro(vcode varchar2);end cur_pack;/sql create or replace package body cur_pack as curso

10、r ord_cur(vcode varchar2) return order_master%rowtype is select * from order_master where vencode=vcode; procedure ord_pro(vcode varchar2) is or_rec order_master%rowtype; begin open ord_cur(vcode); loop fetch ord_cur into or_rec; exit when ord_cur%notfound; dbms_output.put_line(返回的值为返回的值为 | or_rec.o

11、rderno); end loop; end ord_pro;end cur_pack;/28有关子程序和程序包的信息 user_objects 视图包含用户创建的子程序和程序包的信息 user_source 视图存储子程序和程序包的源代码select object_name, object_typefrom user_objectswhere object_type in (procedure, function, package, package body);select line, text from user_sourcewhere name=test;29总结 子程序是命名的 pl/s

温馨提示

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

评论

0/150

提交评论