PL/SQL 함수 복사의 예

다음 예는 이종 데이터베이스 간에 PL/SQL 함수를 복사할 때 생성되는 DDL을 보여줍니다.

생성된 DDL은 데이터베이스 오브젝트 붙여넣기 마법사의 DDL 미리보기 페이지에 표시됩니다.

표 1은 Oracle Database 11g 소스 데이터베이스에서 Linux®, UNIX® 및 Windows®용 DB2® 버전 9.7 목표 데이터베이스로 PL/SQL 함수를 복사하는 경우 생성되는 DDL의 예를 보여줍니다.

표 1. Oracle Database 11g에서 Linux, UNIX 및 Windows용 DB2 버전 9.7 데이터베이스로 PL/SQL 함수를 복사하는 예
Oracle Database 11g PL/SQL 함수 정의 DB2 버전 9.7 데이터베이스에 대해 생성된 DDL
CREATE OR REPLACE FUNCTION func_authid2
RETURN NUMBER
AUTHID DEFINED
AS   x   NUMBER(9,2);
BEGIN
   x := 65400;
   RETURN x;
END;
/
CREATE FUNCTION func_authid2
RETURN NUMBER
AUTHID DEFINED
AS   x   NUMBER(9,2);
BEGIN
   x := 65400;
   RETURN x;
END func_authid2;
CREATE OR REPLACE FUNCTION func_cursr
  ( p_job VARCHAR2 )
RETURN SYS_REFCURSOR
IS
   emp_refcur   SYS_REFCURSOR;
BEGIN
   OPEN emp_refcur FOR
   SELECT empno, ename
   FROM emp
   WHERE job = p_job;
   RETURN emp_refcur;
END;
/
CREATE FUNCTION func_cursr (
   p_job VARCHAR2 )
RETURN SYS_REFCURSOR
IS
   emp_refcur   SYS_REFCURSOR;
BEGIN
   OPEN emp_refcur FOR
   SELECT empno, ename
   FROM emp
   WHERE job = p_job;
   RETURN emp_refcur;
END func_cursr;
CREATE OR REPLACE FUNCTION func_cursr2
  ( p_job VARCHAR2,
    c SYS_REFCURSOR )
RETURN SYS_REFCURSOR
IS
   emp_refcur   SYS_REFCURSOR;
BEGIN
   OPEN emp_refcur
   FOR SELECT empno, ename
   FROM emp
   WHERE job = p_job;
   RETURN emp_refcur;
END;
/
CREATE FUNCTION func_cursr2 (
    p_job VARCHAR2,
    c SYS_REFCURSOR )
RETURN SYS_REFCURSOR
IS
   emp_refcur   SYS_REFCURSOR;
BEGIN
   OPEN emp_refcur
   FOR SELECT empno, ename
   FROM emp
   WHERE job = p_job;
   RETURN emp_refcur;
END func_cursr2;
CREATE OR REPLACE FUNCTION func_inout
  ( p_job IN VARCHAR2,
    p_job2 OUT VARCHAR2,
    p_job3 IN OUT VARCHAR2 )
RETURN SYS_REFCURSOR
IS
   emp_refcur   SYS_REFCURSOR;
BEGIN
   OPEN emp_refcur
   FOR SELECT empno, ename
   FROM emp
   WHERE job = p_job;
   RETURN emp_refcur;
END;
/
CREATE FUNCTION func_inout (
   p_job IN VARCHAR2,
   p_job2 OUT VARCHAR2,
   p_job3 IN OUT VARCHAR2 )
RETURN SYS_REFCURSOR
IS
   emp_refcur   SYS_REFCURSOR;
BEGIN
   OPEN emp_refcur
   FOR SELECT empno, ename
   FROM emp
   WHERE job = p_job;
   RETURN emp_refcur;
END func_inout;
CREATE OR REPLACE FUNCTION func_inout2
  ( p_job IN VARCHAR2,
    p_job2 OUT NOCOPY VARCHAR2,
    p_job3 IN OUT VARCHAR2 )
RETURN SYS_REFCURSOR
IS
   emp_refcur   SYS_REFCURSOR;
BEGIN
   OPEN emp_refcur
   FOR SELECT empno, ename
   FROM emp
   WHERE job = p_job;
   RETURN emp_refcur;
END;
/
CREATE FUNCTION func_inout2 (
   p_job IN VARCHAR2,
   p_job2 OUT NOCOPY VARCHAR2,
   p_job3 IN OUT VARCHAR2 )
RETURN SYS_REFCURSOR
IS
   emp_refcur   SYS_REFCURSOR;
BEGIN
   OPEN emp_refcur
   FOR SELECT empno, ename
   FROM emp
   WHERE job = p_job;
   RETURN emp_refcur;
END func_inout2;
CREATE FUNCTION sal_ok2
  ( salary  NUMBER,
    title   VARCHAR2 )
RETURN BOOLEAN
IS
   min_sal NUMBER;
   max_sal NUMBER;
   -- AUTHID CURRENT_USER
   -- PARALLEL_ENABLE
BEGIN
   SELECT losal, hisal
   INTO min_sal, max_sal
   FROM sals
   WHERE job = title;
   RETURN (salary >= min_sal)
      AND (salary <= max_sal);
END;
/
CREATE FUNCTION sal_ok2 )
   salary  NUMBER,
   title   VARCHAR2 )
RETURN BOOLEAN
IS
   min_sal NUMBER;
   max_sal NUMBER;
   -- AUTHID CURRENT_USER
   -- PARALLEL_ENABLE
BEGIN
   SELECT losal, hisal
   INTO min_sal, max_sal
   FROM sals
   WHERE job = title;
   RETURN (salary >= min_sal)
      AND (salary <= max_sal);
END sal_ok2;

표 2는 Linux, UNIX 및 Windows용 DB2 버전 9.7 소스 데이터베이스에서 Oracle Database 11g 목표 데이터베이스로 PL/SQL 함수를 복사하는 경우 생성되는 DDL의 예를 보여줍니다.

표 2. Linux, UNIX 및 Windows용 DB2 버전 9.7 데이터베이스에서 Oracle Database 11g로 PL/SQL 함수를 복사하는 예
DB2 버전 9.7 데이터베이스 PL/SQL 함수 정의 Oracle Database 11g에 대해 생성된 DDL
CREATE FUNCTION F047(
     pID     INTEGER,
     pFName  CHAR,
     pLNAME  VARCHAR
-- , pmyLONGVARCHAR LONG VARCHAR
)
RETURN CHAR
ASBEGIN
   RETURN pFName;
END F047;
CREATE FUNCTION F047
    (pID  INTEGER,
     pFName CHAR,
     pLNAME VARCHAR
--, pmyLONGVARCHAR LONG VARCHAR
)
RETURN CHAR
ASBEGIN
   RETURN pFName;
END F047;

피드백