by bellpp [DB 기타] 오라클 DBMS_METADATA.GET_DDL [2021.07.16 10:11:17]
버전은 오라클 12c입니다.
오브젝트 DDL을 뽑기위해 아래와 같은 DBMS_METADATA.GET_DDL(object_type, object_name, owner) 사용하여서 추출하는데
간혹가다 오브젝트이름이 두번출력되는 함수와 프로시저가 생겨서 질문드립니다.
CREATE OR REPLACE NONEDITIONABLE PROCEDURE "TEST"."PCD_TBL_BLOB_INSERT" PCD_TBL_BLOB_INSERT
밑줄친 것과같이 프로시저 명은PCD_TBL_BLOB_INSERT인데, 유저와 오브젝트이름 그리고 오브젝트 이름이 한번더나와서 안나오게
하는 옵션이있는지 질문드립니다.
dbms_metadata.set_transform_param( DBMS_METADATA.SESSION_TRANSFORM, 'STORAGE', false);
dbms_metadata.set_transform_param( DBMS_METADATA.SESSION_TRANSFORM, 'CONSTRAINTS_AS_ALTER', TRUE );
현재 이 두가지 옵션만 적용하여 추출중입니다.
추가로 DB툴은 dbeaver 사용하는데
CREATE OR REPLACE NONEDITIONABLE PROCEDURE "TEST"."PCD_TBL_BLOB_INSERT" PCD_TBL_BLOB_INSERT
sqlplus에서는 해당 구문을 create 했을때 오류가발생하지만
dbeaver에서는 정상적으로 생성됩니다.
sqlplus에서 procedure alias를 인식할 수 있는 옵션도 있는지 궁금합니다.
-----------------------------------------------------
추가로 최초 생성때 CREATE OR REPLACE PROCEDURE "TEST"."PCD_TBL_BLOB_INSERT" 이런식으로 만들면
SELECT DBMS_METADATA.GET_DDL(object_type, object_name, owner) FROM DUAL 사용하여 DDL을 뽑으면
CREATE OR REPLACE PROCEDURE "TEST"."PCD_TBL_BLOB_INSERT"
CREATE OR REPLACE PROCEDURE "SCHEMA"."OBJECTNAME" 형태
CREATE OR REPLACE PROCEDURE PCD_TBL_BLOB_INSERT 이런식으로 만들면
CREATE OR REPLACE PROCEDURE "TEST"."PCD_TBL_BLOB_INSERT" PCD_TBL_BLOB_INSERT
CREATE OR REPLACE PROCEDURE "SCHEMA"."OBJECTNAME" OBJECTNAME 출력됩니다.
-----------------------------------------------------
SELECT DBMS_METADATA.GET_DDL(object_type, object_name, owner) FROM DUAL 사용했을때 1번 결과처럼 DDL이 출력되길 원합니다.