包和子程序[考试复习]_第1页
包和子程序[考试复习]_第2页
包和子程序[考试复习]_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、第七章 包和子程序1.1 目标1. 过程和函数2. 过程和函数在plsql中调用3. 包1.2 知识点1. 过程和函数的作用,语法结构,参数的类型2. 在plsql语句块中调用函数和过程3. 包和包体的作用,语法结构1.3 难点1. 过程和函数的作用,语法结构,参数的类型2. 包和包体的作用,语法结构1.4 讲解内容前面Plsql是匿名的存储过程,可以批量执行sql操作,并且可以加入条件控制,但是每次执行的plsql脚本不能在服务器端保存,而过程和函数可以将plsql语句块按功能划分,并保存起来,实现代码的复用,简单的讲,过程和函数是对plsql语句块的封装,是有名字的plsql语句块。1.4

2、.1 过程过程语法结构:Create or replace procedure 存储过程名称 as 创建或重定义存储过程名称,Begin执行过程的语句块End;执行语句块用begin和end包围,相当于程序中的,表示语句块的开始和结束Create or replace procedure 存储过程名称(参数1,参数2) as 创建或重定义存储过程名称,Begin执行过程的语句块End;要点:1. 参数默认是输入参数,注明out为输出参数 in out为输入输出参数2. 没有参数的过程和函数,在过程名称后面不用带()括号3. 有参数的过程和函数,形式参数的数据类型不需要指定长度4. 局部变量放在

3、 as 和begin之间,begin和end之间是plsql语句块示例:create or replace procedure pro1 asbegindbms_output.put_line(dd);end;create or replace procedure pro2(v_val1 in out varchar2,v_val2 in out varchar2) asbegin dbms_output.put_line(v_val1:|v_val1); dbms_output.put_line(v_val2:|v_val2);end;1.4.2 函数函数的语法结构和过程类似,区别在于多了一

4、个返回值Create or replace function 函数名称 return 类型 as创建或重定义函数,必须带return和返回一个数据的类型Begin 函数执行的语句块 return 返回值 返回值,和创建函数声明中返回类型要一致End;示例:create or replace function fun1 return varchar2 asbeginreturn ddd;end;create or replace function fun2(v_val1 in out varchar2,v_val2 in out varchar2) return varchar2 asbegin

5、dbms_output.put_line(v_val1:|v_val1); dbms_output.put_line(v_val2:|v_val2);return ddd;end;1.4.3 过程和函数在plsql中调用在plsql语句块中调用函数和过程declarev_val1 varchar2(200):=aaaa;v_val2 varchar2(200):=dddd;v_result varchar2(400);begin -调用过程1 pro1; -调用过程2 pro2(v_val1,v_val2); -调用函数1 v_result:=fun1; -调用函数2 v_result:=fu

6、n2(v_val1,v_val2);end;要点:1. 过程可以再sqlplus命令行方式下调用,也可以再plsql语句块中调用,而函数只能在plsql语句块中调用。2. 过程在命令行下调用使用 call 过程名,在plsql中调用不需要call1.4.4 包包的概念是将某一系列的函数或过程进行封装打包以便于管理和方便使用,创建包分为创建包体和创建包体2部分1.4.4.1 包头create or replace package pak1 as-定义数据类型type curemptype is ref cursor;count int;-定义包的过程和函数procedure getrecord(

7、curemp_ref out curemptype);end;要点:在包头中定义引用游标类型和在plsql语句块declare部分定义有一点区别,在类型名后多一个is1.4.4.2 包体create or replace package body pak1 asprocedure getrecord(curemp_ref out curemptype) asbegin open cur_emp for select * from emp;end;end;要点:返回引用游标的存储过程只在过程中打开游标1.5 作业以scott示例用户表为基础编写存储过程1. 编写一个过程,通过参数传递部门编号,查询并打印相关部门的员工姓名、工作、入职日期、薪金等详细信息。2. 编写一个函数,给工作是办事员的员工加薪30%,给工作是销售的加薪50%要求使用游标,函数返回修改的记录个数。3. 编写一个可供java程序调用的存储过程,过程参数定义为输入输出的引用游标,返回emp表的记录集4. 另外有一个网上商城的系统,为了这个系统创建一个订单处理的包,这个包中有一个存储过程,用于删除订单,在删除订单的时候

温馨提示

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

评论

0/150

提交评论