본문 바로가기

빅데이터과정/PL/SQL

#15_140703_PACKAGE_OVERLOAD

728x90

# OVERLOAD



4패키지의 오버로딩
아래의 구현을 가능하게 하려면 패키지의 오버로딩 기능을 이용해야한다
exec sal_rank(1,3);  -- 대기업 연봉순위 1위부터 3위까지 나오는 프로시져
exec sal_rank(1); -- 매개변수 하나만 입력하면 1위만 나오는 프로시져


같은 이름의 프로시져 이름을 가지면서 동시에 다른 매개변수를 갖도록 하는 것을 의미한다





문제185. 아래의 명령어가 가능하도록 아래의 소스를 고치시오
exec sal_pack.sal_rank(1,5);
exec sal_pack.sal_rank(1);


CREATE OR REPLACE PACKAGE sal_pack AS
 PROCEDURE SAL_RANK(p_rank NUMBER, p_rank2 number);
END sal_pack;
/

CREATE OR REPLACE PACKAGE BODY sal_pack AS
 PROCEDURE SAL_RANK(p_rank NUMBER, p_rank2 number) IS

 CURSOR emp_sal_cursor IS
  SELECT t_name, t_sal, 순위
  FROM (SELECT t_name, t_sal, RANK() OVER(ORDER BY t_sal desc) 순위 FROM emp_sal)
  WHERE 순위 BETWEEN p_rank AND p_rank2;

 BEGIN
  FOR emp_record IN emp_sal_cursor LOOP
   dbms_output.put_line('순위 ' || emp_record.순위 ||' '||emp_record.t_name);
   dbms_output.put_line('순위 ' || emp_record.순위 ||' '||emp_record.t_sal);
 END LOOP;
 END SAL_RANK;
END sal_pack;
/

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

CREATE OR REPLACE PACKAGE sal_pack AS
 PROCEDURE SAL_RANK(p_rank NUMBER);
 PROCEDURE SAL_RANK(p_rank NUMBER, p_rank2 number);
END sal_pack;
/

CREATE OR REPLACE PACKAGE BODY sal_pack AS
 PROCEDURE SAL_RANK(p_rank NUMBER) IS

 CURSOR emp_sal_cursor IS
  SELECT t_name, t_sal, 순위
  FROM (SELECT t_name, t_sal, RANK() OVER(ORDER BY t_sal desc) 순위 FROM emp_sal)
  WHERE 순위=p_rank;

 BEGIN
  FOR emp_record IN emp_sal_cursor LOOP
   dbms_output.put_line('순위 ' || emp_record.순위 ||' '||emp_record.t_name);
   dbms_output.put_line('순위 ' || emp_record.순위 ||' '||emp_record.t_sal);
 END LOOP;
 END SAL_RANK;

 PROCEDURE SAL_RANK(p_rank NUMBER, p_rank2 number) IS

 CURSOR emp_sal_cursor IS
  SELECT t_name, t_sal, 순위
  FROM (SELECT t_name, t_sal, RANK() OVER(ORDER BY t_sal desc) 순위 FROM emp_sal)
  WHERE 순위 BETWEEN p_rank AND p_rank2;

 BEGIN
  FOR emp_record IN emp_sal_cursor LOOP
   dbms_output.put_line('순위 ' || emp_record.순위 ||' '||emp_record.t_name);
   dbms_output.put_line('순위 ' || emp_record.순위 ||' '||emp_record.t_sal);
 END LOOP;
 END SAL_RANK;
END sal_pack;

/



'빅데이터과정 > PL/SQL ' 카테고리의 다른 글

#16_140704_PL_SQL_종속성  (0) 2014.07.15
#15_140703_PL_SQL_암호화  (0) 2014.07.15
#15_140703_PL_SQL_PACKAGE  (0) 2014.07.15
#14_140702_PL_SQL_TRIGGER  (0) 2014.07.15
#14_140702_PL_SQL_RETURNING  (0) 2014.07.15