ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • oracle PL/SQL_패키지
    DataBase/oracle 2020. 4. 20. 23:52

     

    패키지 : 연관성있는 함수나 프로시저를 그룹으로 모아놓은 개념

    패키지의 구성 : 선언부 + 몸체부 ( 선언부에서 선언되지않아도 몸체부에서 사용가능. but 권장x)

       ***구문형식

    create [or replace] package 패키지명

    is [as]

         procedure 프로시저1이름,

         procedure 프로시저2이름,

         ....

    end;

    create [or replace] package body 패키지명

    is [as]

         procedure 프로시저이름

            subprogram bodis : 실제 작동하게 될 서브프로그램(프로시저or함수)

    end;

     

    < 패키지의 실행 >

    패키지는 여러 환경하여 호출되어 실행 가능

    패키지에대한 실행 권한을 가진 사용자만 실행시킬 수 있다

     

    <패키지 삭제>

    선언부와 몸채부 모두 삭제 or 몸체부만 삭제 가능

    drop package 패키지명;

    drop package body 패키지명;

     

    패키지 선언부

    1
    2
    3
    4
    5
    create or replace package emp_proc is
        procedure emp_sum;
        procedure emp_avg;
    end;
    /
    http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

     

    패키지 body

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    create or replace package body emp_proc as
        procedure emp_sum is
            cursor emp_tot_sum is
                select count(*), sum(nvl(salary,0)) from employees;
                tot_num number;
                tot_sum number;
            begin
            open emp_tot_sum;
            fetch emp_tot_sum into tot_num, tot_sum;
                dbms_output.put_line('전체인원수 : ' || tot_num || ', 급여합계 : ' || tot_sum);
            close emp_tot_sum;
        end emp_sum;
        
        procedure emp_avg is
            cursor emp_tot_avg is
                select count(*), avg(nvl(salary,0)) from employees;
                tot_num number;
                tot_avg number;
            begin
            open emp_tot_avg;
            fetch emp_tot_avg into tot_num, tot_avg;
                dbms_output.put_line('전체인원수 : ' || tot_num || ', 평균급여 : ' || tot_avg);
            close emp_tot_avg;
        end emp_avg;
    end; --패키지 끝
    /
    http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

     

    패키지 실행

    1
    2
    3
    4
    --패키지 실행방법  : exec 패키지명.프로시저이름
     
    exec emp_proc.emp_avg;
    exec emp_proc.emp_sum;

    댓글

Designed by Tistory.