图解Oracle包实例
来源:互联网 发布:基于linux的c语言编程 编辑:程序博客网 时间:2024/04/28 15:13
以下使用SQL Developer,使用Oracle SCOTT账号自带emp表,创建包。
1 在包中定义record类型,并在匿名块中调用
--在包中自定义类型
create or replace package my_bao
as
type emp_type is record(
gh emp.empno%type,
xm emp.ename%type,
gz emp.sal%type
);
end;
创建之后刷新一下,左侧视图 程序包 下出来所创建内容;
2 调用,
declare
v1 my_bao.emp_type;
begin
select empno,ename,sal into v1 from emp where empno=7900;
dbms_output.put_line('工号='||v1.gh);
dbms_output.put_line('姓名='||v1.xm);
dbms_output.put_line('工资='||v1.gz);
end;
结果如下图;
如果DBMS输出中没有内容,点击上图中最右侧的像书的页的那个小图标,打开DBMS输出;
3 在包中定义过程hello和函数f_add(p1,p2)
--定义包规范
create or replace package my_bao2
as
type emp_type is record(
gh emp.empno%type,
xm emp.ename%type,
gz emp.sal%type
);
procedure hello(p_name varchar2);
function f_add(p1 number,p2 number) return number;
end;
4 实现包规范,即包体(package body)
create or replace package body my_bao2
as
type emp_type is record(
gh emp.empno%type,
xm emp.ename%type,
gz emp.sal%type
);
procedure hello(p_name varchar2)
as
begin
dbms_output.put_line('hello,'||p_name);
end;
function f_add(p1 number,p2 number) return number
as
v1 number;
begin
v1:=p1+p2;
return v1;
end;
end;
5 调用
select my_bao2.f_add(1,2) from dual;
6 调用
call my_bao2.hello('oracle');
7 包中重载方法
重载的要点就是名称一样,而参数的类型或者个数不同。
定义代码:
create or replace package my_bao3
as
function f_add(p1 number,p2 number) return number;
function f_add(p1 varchar,p2 varchar) return number;
end;
包体:
create or replace
package body my_bao3
as
function f_add(p1 number,p2 number) return number
as
v1 number;
begin
v1:=p1+p2;
return v1;
end;
ction f_add(p1 varchar,p2 varchar) return number
as
v1 number;
begin
v1:=p1+p2;
return v1;
end;
end;
8 调用
select my_bao3.f_add(1,2) from dual;
9 调用
select my_bao3.f_add('6','2') from dual;
oracle会根据参数类型自动选择调用哪个函数;
- 图解Oracle包实例
- 图解Oracle 12c 触发器实例
- oracle 中的包和游标实例
- 图解java.io.*包
- 图解闭包
- 图解闭包
- 图解JS闭包
- 图解闭包
- Junit4实例图解[收藏]
- 图解Detours实例
- 图解netstat命令实例
- 图解Linux命令实例
- javap使用实例图解
- WPF实例图解
- SSM整合实例图解
- sql join实例图解
- Oracle 11g数据库详细安装步骤图解,附带安装包
- 实例讲解:Oracle数据库包的构造过程
- poj1833
- 关于SetMargins 使用的问题,在CRichEdit中实现与CEdit中一样的功能的函数。
- Android自定义适配器和ListView的点击事件相结合的使用
- 网线 为什么一定要有交叉线呢?(网线连接标准)
- ios中与π相关的常数
- 图解Oracle包实例
- T001_UT001_0020
- java中的50个关键字
- hdu 4217 Data Structure? treap
- 历届试题 错误票据
- #笔记#圣思园 JavaSE 第11讲——面向对象之 封装 encapsulation 续二
- 【字符串】面试题之替换子串
- 为vim增加目录浏览插件
- ListView控件的操作方法