SQL> set serveroutput on;
SQL> remark 包:是由存储在一起的相关对象组成的PL SQL结构。包有两个独立的部分:即说明部分和包体,这两个部分是独立的存在数据字典中的;
SQL> remark 包的说明:包的说明包含了有关包的相关信息。该部分中不包含包的代码部分;
SQL> edit;
Wrote file afiedt.buf
1 create or replace package testpak
2 is
3 procedure mysub(a int);
4 function myfunc(b int) return int;
5* end testpak;
SQL> /
Package created.
SQL> remark 包体:是一个独立于包头的数据字典对象。包体只能在包头完成编译后进行编译。包体中带有包头中描述的前向子程序代码段;
SQL> remark 注:包体是可选的;包头和包体中的过程和函数必须一致,包括子程序名和其参数名,以及参数模式。
SQL> create or replace package body testpak
2 as
3 procedure mysub(a int)
4 is
5 begin
6 dbms_output.put_line(a*a);
7 end mysub;
8
9 function myfunc(b int) return int
10 is
11 begin
12 return b+1;
13 end myfunc;
14 end testpak;
15 /
Package body created.
SQL> remark .............................................................
SQL> remark 包和作用域:包头中声明的任何对象都是在其作用域中,使用包名.对象名 可以调用包中对应的对象;
SQL> remark 在包体中:包头中的 对象可以直接的引用,可以不用包名.
SQL> remark 包头中的变量是全局的 子过程中的变量是局部的;
SQL> create or replace package testpak
2 as
3 thecount int:=0;
4 function add(m int) return int;
5 procedure getcount;
6 end;
7 /
Package created.
SQL> remark 创建包体
SQL> create or replace package body testpak
2 is
3 function add(m int) return int
4 is
5 begin
6 thecount:=thecount+m;
7 return thecount;
8 end add;
9 procedure getcount
10 is
11 begin
12 dbms_output.put_line(thecount);
13 end getcount;
14 end;
15 /
Package body created.
SQL> remark 调用包体中的函数;
SQL> declare
2 result int;
3 begin
4 result:=testpak.add(5);
5 dbms_output.put_line('函数的运算结果为:'||result);
6 dbms_output.put_line('当前包内的参数值为:'||testpak.thecount);
7 testpak.getcount;
8 end;
9 /
函数的运算结果为:5
当前包内的参数值为:5
5
PL/SQL procedure successfully completed.
SQL> /
函数的运算结果为:10
当前包内的参数值为:10
10
PL/SQL procedure successfully completed.
SQL> remark 包中子过程的重载
SQL> remark 在包的内部,过程和函数可以被重载(overloding) 也就是说:可以有一个以上名称相同的,但参数不同的过程或函数。
SQL> remark 示例:子过程中的重载
SQL> create or replace package testpak
2 as
3 thecount int :=0;
4 function add(m int) return int;
5 function add(m int , n int) return int;
6 procedure getcount;
7 end;
8 /
Package created.
SQL> remark 创建包体:实现包头中的函数和过程
SQL> create or replace package body testpak
2 is
3 function add(m int) return int
4 is
5 begin
6 thecount:=thecount+m;
7 return thecount;
8 end add;
9
10 function add(m int , n int) return int
11 is
12 begin
13 thecount:=thecount+m+n;
14 return thecount;
15 end add;
16
17 procedure getcount
18 is
19 begin
20 dbms_output.put_line(thecount);
21 end getcount;
22 end;
23 /
Package body created.
SQL> remark 调用函数和存储过程
SQL> declare
2 result int;
3 begin
4 dbms_output.put_line('调用add(m int)的函数:');
5 result :=testpak.add(5);
6 dbms_output.put_line('当前包内thecount的值为:'||testpak.thecount);
7 dbms_output.put_line('调用add(m int,n int)的函数:');
8 result :=testpak.add(5,5);
9 dbms_output.put_line('当前包内thecount的值为:'||testpak.thecount);
10 end;
11 /
调用add(m int)的函数:
当前包内thecount的值为:5
调用add(m int,n int)的函数:
当前包内thecount的值为:15
PL/SQL procedure successfully completed.
SQL> spool off;
[size=x-large][/size]
分享到:
相关推荐
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
Oracle PL/SQL实例精解 student模式 数据库建立代码 包括数据库的建立、索引等。样本数据的插入。
Oracle PL/SQL实例编程 Oracle PL/SQL实例编程 Oracle PL/SQL实例编程
PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及...
Topics covered: How to use Oracle PL/SQL in all its manifestations through Oracle9i. Fundamentals of program structure (loops, cases, exceptions, etc.) and execution get attention, as do data types, ...
oracle pl/sql实例精讲student数据库模式
Considered the best Oracle PL/SQL programming guide by the Oracle community, this definitive guide is precisely what you need to make the most of Oracle’s powerful procedural language. The sixth ...
oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料
Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发
oracle pl/sql从入门到精通 配套源代码
Oracle PL/SQL学习官方教材,英文版,覆盖了PL/SQL的所有知识,适合入门者或作为参考资料.
ORACLE PL/SQL编程之八ORACLE PL/SQL编程之八ORACLE PL/SQL编程之八ORACLE PL/SQL编程之八
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
《OraclePL/SQL程序设计(第5版)》不但介绍了大量的Oracle11g的PL/SQL新性能,还提供了许多优化PL/SQL性能的新方法。 《OraclePL/SQL程序设计(第5版)》结构清晰,示例丰富,实践性强,适用于Oracle数据库开发人员、...
《oracle pl/sql程序设计(第5版)》基于oracle数据库11g,从pl/sql编程、pl/sql程序结构、pl/sql程序数据、pl/sql中的sql、pl/sql应用构建、高级pl/sql主题6个方面详细系统地讨论了pl/sql以及如何有效地使用它。...
NULL 博文链接:https://elf8848.iteye.com/blog/740881
《Oracle PL/SQL程序设计(第5版)》基于 Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、 PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
oracle10g pl/sql完备教程,供初学者学习与开发者参考
这是我自己根据书本《ORACLE PL/SQL从入门到精通》何明,写的笔记,有目录。
oracle 9i pl/sql程序设计笔记。