oracle怎么使用包,oracle包(package)入门——应用实例

包的作用 : 包可以将任何出现在块声明的语句 ( 过程 , 函数 , 游标 , 游标 , 类型 , 变量 ) 放于包中 , 相当于一个容器 . 将声明语句放入包中的好处是 : 用户可以从其他 PL/SQL 块中对其进行引用 , 因此包为 PL/SQL 提供了全程变量 .

打包的PL/SQL程序和没有打包的有很大的差异,包数据在用户的整个会话期间都一直存在,当用户获得包的执行授权时,就等于获得包规范中的所有程序和数据结构的权限。但不能只对包中的某一个函数或过程进行授权。包可以重载过程和函数,在包内可以用同一个名字声明多个程序,在运行时根据参数的数目和数据类型调用正确的程序。

分为两部分 : 包头和包体创建包头CREATE [OR REPLACE] PACKAGE package_name

{AS|IS}

public_variable_declarations |

public_type_declarations |

public_exception_declarations |

public_cursor_declarations |

function_declarations |

procedure_specifications

END [package_name]

创建包主体使用CREATE PACKAGE BODY语句:

CREATE [OR REPLACE] PACKAGE BODY package_name

{AS|IS}

private_variable_declarations |

private_type_declarations |

private_exception_declarations |

private_cursor_declarations |

function_declarations |

procedure_specifications

END [package_name]

以下是完是一个比较简单的示例:

> create or replace package pg_myfirst

2  is

3  procedure sp_emp_insert;

4  function f_getename(i_empno number) return varchar2;

5  end pg_myfirst;

6  /

程序包已创建。

> create or replace package body pg_myfirst

2  is

3  procedure sp_emp_insert

4  is

5  begin

6  insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)

7  values(7384,'WangYi','SALESMAN',7698,to_date('2011-07-29','yyyy-mm-dd'),125

0.00,1400.00,30);

8  commit;

9  end;

10  function f_getename(i_empno number)

11  return varchar2

12  is

13  v_ename varchar2(200);

14  begin

15  select ename into v_ename from emp where empno=i_empno;

16  return v_ename;

17  end;

18  end;

19  /

程序包体已创建。

> call pg_myfirst.sp_emp_insert();

调用完成。

> select pg_myfirst.f_getename(7384) from dual;

PG_MYFIRST.F_GETENAME(7384)

--------------------------------------------------------------------------------

--------------------

WangYi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值