Home > Database > Mysql Tutorial > 图解Oracle包实例

图解Oracle包实例

WBOY
Release: 2016-06-07 15:38:24
Original
1479 people have browsed it

以下使用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 );

    以下使用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;

创建之后刷新一下,左侧视图 程序包 下出来所创建内容;

图解Oracle包实例


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;

结果如下图;

图解Oracle包实例

    如果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;

图解Oracle包实例


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;

图解Oracle包实例


5 调用

select my_bao2.f_add(1,2) from dual;

图解Oracle包实例


6 调用

call my_bao2.hello('oracle');

图解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;

图解Oracle包实例


8 调用

select my_bao3.f_add(1,2) from dual;

图解Oracle包实例


9 调用

select my_bao3.f_add('6','2') from dual;

oracle会根据参数类型自动选择调用哪个函数;

图解Oracle包实例

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template