oracle中的“包”,我也了解,但是,对这个东西的用途,不是很了解,有谁能用通俗的语言解释下哦,最好,能给一个简单的列子,帮我分析下哦,谢谢

解决方案 »

  1.   

    类似于 java 里的类 Class
      

  2.   

    在一个大型项目中,有很多模块,每个模块都可能有很多的过程和函数,这些过程和函数默认就是放在一起,不方便查询和维护,甚至会发生误删除的事件。所以通过使用包,就可以分类管理过程和函数。使用包还有一个好处,就是可以在包中定义自定义类型,从而在过程和函数可以直接用于定义变量。包的概念与java程序中包的概念是非常类似的,java程序中包也是为了分类管理不同的类,关键字都是package。
      

  3.   

    一楼说的对极了,就好比java中的类的定义,而方法,还有存储过程则好比类中定义的方法.通过包名.方法名或者存储过程名就可以调用包中的各个对象了.如:示例:
    --package
    CREATE OR REPLACE PACKAGE PCK_DOMAIN
    IS
    FUNCTION GET_DEPTNO(IN_DNAME VARCHAR2) RETURN VARCHAR2;
    PROCEDURE UPDATE_HIREDATE(IN_NAME IN VARCHAR2) ;
    END PCK_DOMAIN ;--package body
    CREATE OR REPLACE PACKAGE BODY PCK_DOMAIN IS
    --存储过程实现
      PROCEDURE UPDATE_HIREDATE(IN_NAME IN VARCHAR2)
      IS
      IN_DEPNO VARCHAR2(10);
      BEGIN
        IN_DEPNO:=GET_DEPTNO(IN_NAME);
        UPDATE EMP SET HIREDATE=TRUNC(SYSDATE)-7 WHERE DEPTNO = IN_DEPNO ;
        COMMIT;
        EXCEPTION WHEN OTHERS THEN
          DBMS_OUTPUT.put_line('PROC->ERROR CODE : '||sqlcode||'ERROR MSG: '||UPPER(sqlerrm));
          ROLLBACK;
      END UPDATE_HIREDATE ;
    END PCK_DOMAIN;---方法实现
    FUNCTION GET_DEPTNO(IN_DNAME VARCHAR2) RETURN VARCHAR2
      IS
      IN_DEPNO VARCHAR2(10);
      BEGIN
        SELECT DEPTNO INTO IN_DEPNO FROM DEPT WHERE DNAME = IN_DNAME ;
        RETURN IN_DEPNO;
        EXCEPTION 
          WHEN OTHERS THEN
            DBMS_OUTPUT.put_line('FUNCTION-> ERROR CODE : '||sqlcode||'ERROR MSG: '||UPPER(sqlerrm));
             RETURN NULL;
      END GET_DEPTNO;END PCK_DOMAIN;--test--
    BEGIN
    PCK_DOMAIN.UPDATE_HIREDATE('SALES');
    END;
      

  4.   

    我怎么感觉想java中的接口开发哦?
    包头是接口
    包体是对接口的具体实现。
    呵呵,不知道,我这样理解对不对。
      

  5.   

    何必想那么多呢,功能相近的函数放到一块,用一个namespace包起来,其实世界是美好的,思想是简单的