dbms_metadata 이용한 Procedure 생성 질문 0 1 1,118

by ITSTUDY [PL/SQL] [2013.02.08 16:36:01]


안녕하세요

Procedure 에 대해서 공부 하고 있는 학생 입니다.

저번 질문 때도 자세하게 답변 해주셔서 많은 도움을 받았는데요

이번에도 질문 드릴게 하나 더 있어서 이렇게 글 적습니다.

dbms_metadat.get_ddl 을 이용한 Procedure 생성 인데요.

 =======================================================================
Select dbms_metadata.get_ddl('OBJECT_TYPE','OBJECT_NAME','OWNER') FROM DUAL;
=======================================================================

의 구문을 아래의 프로시져로 바꿔서 만든 것입니다.

=======================================================================
CREATE OR REPLACE PROCEDURE get_source 
    (
  v_object_type IN varchar2, 
  v_obejct_name IN varchar2, 
  v_owner IN VARCHAR2 
    ) 
  IS
    v_text long; 
BEGIN
   DBMS_OUTPUT.ENABLE ;
  SELECT DBMS_METADATA.GET_DDL
  (upper(v_object_type), upper(v_obejct_name), upper(v_owner)) INTO v_text 
   FROM DUAL; 
  DBMS_OUTPUT.PUT_LINE('TEXT : '||v_text||' '); 
END; 
/
=======================================================================

실행은 exec get_source('type','name','owner');

이렇게 될 것입니다. 제가 하고 싶은 것은

exec get_source('name','owner'); 이렇게 타입 부분을 빼서 만들어 보고싶은데요.

type을 입력 하지 않아도 프로시져가 실행 되게씀 하고 싶은데, 처음 하는거라 그런지

감이 오질 않네요.

선배님들의 조언 부탁 드리겠습니다 ㅠ
by 타락천사 [2013.02.08 22:03:35]

object_type 중에 synonym 말고는  duplicate 될게 없을 것 같구요
owner 랑 object_name 으로 dba_object 에서 type 만 자동으로 찾아서
동일한 방식으로 하면 되겠네요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입