현상
Tibero6 FS07_CS_2005 이하 버전에서 PROCEDURE 구문 추출 시, 아래와 같은 두 에러가 발생합니다.
SQL> select to_char( dbms_metadata.get_ddl('PROCEDURE','SYSDATE_COUNT','TIBERO')) from dual;
TBR-14001: Not yet implemented.
TBR-15163: Unhandled exception at SYS.DBMS_METADATA, line 1874.
SQL
복사
원인
Tibero6 FS07_CS_2005 이하 버전에서는 dbms_metadata.get_ddl를 지원하지 않으므로 에러가 발생합니다.
해결
Tibero6 FS07_CS_2005 이하 버전에서는 DBA_SOURCE 뷰를 활용한 수동 구문 추출 방식으로 대체 가능합니다.
1. 테스트 테이블 생성
SQL> CREATE TABLE DAY_CK (DD VARCHAR2(10));
Table 'DAY_CK' created.
SQL
복사
2. 프로시저 생성
SQL> CREATE OR REPLACE PROCEDURE SYSDATE_COUNT(
Test_Date IN VARCHAR2
)
IS
TEMP VARCHAR(8);
BEGIN
TEMP := TO_CHAR(TO_DATE(Test_Date,'YYYYMMDD'),'DY');
INSERT INTO DAY_CK(DD) VALUES(TEMP);
COMMIT;
END;
/
SQL
복사
3. 프로시저 수행
SQL> call SYSDATE_COUNT(20250219);
PSM called.
SQL> select * from DAY_CK;
DD
----------
수
1 row selected.
SQL
복사
4. 구문 추출
4.1 Tibero6 FS07_CS_2005 이상 버전: dbms_metadata.get_ddl 사용
--구문형식
SQL> select to_char(dbms_metadata.get_ddl('오브젝트타입', '오브젝트명', '스키마명')) from dual;
SQL
복사
SQL> select to_char( dbms_metadata.get_ddl('PROCEDURE','SYSDATE_COUNT','TIBERO')) from dual;
TO_CHAR(DBMS_METADATA.GET_DDL('PROCEDURE','SYSDATE_COUNT','TIBERO'))
--------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE "TIBERO".SYSDATE_COUNT(
Test_Date IN VARCHAR2
)
IS
TEMP VARCHAR(8);
BEGIN
TEMP := TO_CHAR(TO_DATE(Test_Date,'YYYYMMDD'),'DY');
INSERT INTO DAY_CK(DD) VALUES(TEMP);
COMMIT;
END
1 row selected.
SQL
복사
4.2. Tibero6 FS07_CS_2005 이하 버전: DBA_SOURCE 테이블에서 구문 추출
--구문형식
SQL> SELECT TEXT
FROM DBA_SOURCE
WHERE owner = '스키마명'
AND name = '오브젝트명'
AND type = '오브젝트타입';
SQL
복사
SQL> SELECT text
FROM DBA_SOURCE
WHERE owner = 'TIBERO'
AND name = 'SYSDATE_COUNT'
AND type = 'PROCEDURE';
TEXT
--------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE SYSDATE_COUNT(
Test_Date IN VARCHAR2
)
IS
TEMP VARCHAR(8);
BEGIN
TEMP := TO_CHAR(TO_DATE(Test_Date,'YYYYMMDD'),'DY');
INSERT INTO DAY_CK(DD) VALUES(TEMP);
COMMIT;
END;
13 rows selected.
SQL
복사