Web develop/SQL

[SQL/ORACLE] 패키지(Package) 선언, 실행방법 및 사용예제

ForA 2019. 6. 16. 15:16
728x90

패키지(Package)

  • 동일한 프로시저명 또는 함수명을 구분 (NameSpace 개념)
    --------------패키지 선언-------------------
    CREATE OR REPLACE PACKAGE 패키지명 
    IS
        정의될 저장프로시저와 저장함수 
    END;
    /

    --------------패키지 실행(body)-------------
    CREATE OR REPLACE PACKAGE BODY 패키지명 
    IS
        저장프로시저와 저장삼후 정의
    END;
    /

    --실행 
    EXEC[UTE] 패키지명.저장프로시저명;

패키지 사용예제


    ----------------------패키지 선언-------------------------------------
    create or replace package encore
    is
       procedure del_ename(delEname varchar2);
       function call_bonus(vename emp.ename%type) return number;
    end;
    /
    ----------------------패키지 실행(body)-------------------------------
    create or replace package body encore
    is
        -- 특정사원(이름) 삭제 프로시저
        procedure del_ename(delEname varchar2)
        is

        begin    
            delete from emp3
            where ename= delEname;
            commit;
            dbms_output.put_line('#'||delEname||'사원이 삭제되었습니다');
       end; 

       -- 특정사원의 보너스 얻는 함수
       function call_bonus(vename emp.ename%type)
          return number
          is
            sal emp.sal%type;
            bonus   number;
          begin
              select sal into sal
              from emp
              where ename = vename;  
              -- 보너스 계산
              bonus := sal*2;
       return bonus;    
       end;   
    end;
    /

    --실행
    exec encore.del_ename('FORD');

    variable bonus NUMBER;
    exec encore.vsll_nonud('KING');
    print bonus;