문서유형ㅣ장애해결
분야ㅣ 관리/환경설정
적용제품버전ㅣ6FS07, 6FS07PS, 7FS01, 7FS02, 7FS02PS
문서번호ㅣTADTS006
현상
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.
원인
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.
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;
/
3. 프로시저 수행
SQL> call SYSDATE_COUNT(20250219); PSM called. SQL> select * from DAY_CK; DD ---------- 수 1 row selected.
4. 구문 추출
4.1 Tibero6 FS07_CS_2005 이상 버전: dbms_metadata.get_ddl 사용
--구문형식
SQL> select to_char(dbms_metadata.get_ddl('오브젝트타입', '오브젝트명', '스키마명')) from dual;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.
4.2. Tibero6 FS07_CS_2005 이하 버전: DBA_SOURCE 테이블에서 구문 추출
--구문형식 SQL> SELECT TEXT FROM DBA_SOURCE WHERE owner = '스키마명' AND name = '오브젝트명' AND type = '오브젝트타입';
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.