跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

图解Oracle包实例

以下使用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表,创建包。

oracle知识库oracle知识库下载下载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会根据参数类型自动选择调用哪个函数;

相关文章