패키지 내에서 사용 테이블 정보 출력

2018. 2. 15. 11:06· DB/Oracle
--1. 패키지 내에서 테이블이 어느 프로시저에서 사용하고 있는지 정보를 출력
--2. 프로시저 위치 정보와 테이블 위치정보를 가지는 테이블 생성해서 최종적으로 데어터 추출
--   TABLE : PACKAGE_PROCEDURE_LIST, PACKAGE_TABLE_LOC_LIST
--3. 해당 쿼리를 프로젝트에 맞게 쿼리를 약간 수정해서 사용


--패키지 내 프로시저 위치 정보 테이블을 생성
CREATE TABLE PACKAGE_PROCEDURE_LIST AS 
SELECT 
        NAME
      , TYPE
      , LINE
      , TEXT
      , OBJECT_NAME
      , PROCEDURE_NAME 
FROM 
(
      SELECT 
              A.NAME
            , A.TYPE
            , A.LINE
            , TRIM(REPLACE(REPLACE(REPLACE(REPLACE(A.TEXT,'PROCEDURE',''),'(',''),' ', ''),CHR(10),'')) AS TEXT
            , B.OBJECT_NAME
            , B.PROCEDURE_NAME
        FROM USER_SOURCE A,
             (
              SELECT OBJECT_NAME, PROCEDURE_NAME 
                FROM USER_PROCEDURES
               WHERE OBJECT_NAME LIKE 'PACKAGENM%' --사용하는 패키지명 
                 AND PROCEDURE_NAME IS NOT NULL
             ) B
       WHERE A.NAME = B.OBJECT_NAME
         AND A.TYPE = 'PACKAGE BODY'
         AND UPPER(A.TEXT) LIKE '%PROCEDURE%'||B.PROCEDURE_NAME||'%'
      ORDER BY A.NAME, A.LINE
)X 
WHERE 1=1
  AND X.TEXT = X.PROCEDURE_NAME;


-- 패키지 내에서 사용하고 있는 테이블 위치
CREATE TABLE PACKAGE_TABLE_LOC_LIST AS 
  SELECT /*+ PARALLEL(A 8) */ *
    FROM USER_SOURCE A,
        ( 
          SELECT OBJECT_NAME 
            FROM USER_OBJECTS
           WHERE ( OBJECT_NAME LIKE 'EMP_%' OR OBJECT_NAME LIKE 'INFO_%' ) --EMP, INFO로 시작하는 테이블 및 VIEW 검색 조건
             AND OBJECT_TYPE IN ('TABLE', 'VIEW')
        ) B
  WHERE 1=1 
    AND  A.NAME LIKE 'PACKAGENM%'
    AND INSTR(UPPER(A.TEXT), B.OBJECT_NAME ) > 0
    AND NVL(TRIM(SUBSTR(UPPER(A.TEXT), INSTR(UPPER(A.TEXT), B.OBJECT_NAME )- 1 ,1)),'.') = '.' 
    AND TRIM(SUBSTR(UPPER(REPLACE(A.TEXT,CHR(10),'')), INSTR(UPPER(REPLACE(A.TEXT,CHR(10),'')), B.OBJECT_NAME ) + LENGTH(B.OBJECT_NAME),1)) IS  NULL 
    AND EXISTS ( 
                  SELECT 'X' 
                    FROM PACKAGE_PROCEDURE_LIST X 
                   WHERE A.NAME = X.NAME 
    );
            
-- TABLE : PACKAGE_PROCEDURE_LIST, PACKAGE_TABLE_LOC_LIST을 이용하여 
-- 패키지내 테이블 사용 정보를 출력
SELECT DISTINCT 
       PACKAGE_NM    AS "패키지명"
      ,PROC_NM       AS "프로시저명"
      ,TABLE_NM      AS "테이블명"
      ,T.COMMENTS    AS "테이블설명"
      --,TABLE_LOC
      --,PROC_LOC
      --,PROC_MAXLINE 
 FROM  
 (
       SELECT 
              A.NAME                                                         AS PACKAGE_NM
             ,B.PROCEDURE_NAME                                               AS PROC_NM
             ,A.OBJECT_NAME                                                  AS TABLE_NM
             ,A.LINE                                                         AS TABLE_LOC
             ,B.LINE                                                         AS PROC_LOC
             ,MAX(B.LINE) OVER ( PARTITION BY A.NAME, A.LINE )               AS PROC_MAXLINE
         FROM 
              PACKAGE_TABLE_LOC_LIST A
             ,PACKAGE_PROCEDURE_LIST B
       WHERE 1=1
         AND A.NAME  = B.NAME
         AND B.LINE <= A.LINE
)X, USER_TAB_COMMENTS T
WHERE 1=1
  AND X.PROC_LOC = X.PROC_MAXLINE
  AND X.TABLE_NM = T.TABLE_NAME
ORDER BY PACKAGE_NM, PROC_NM, TABLE_NM;    
728x90
반응형

'DB > Oracle' 카테고리의 다른 글

순위함수  (0) 2018.02.15
오라클 특수문자 검색  (0) 2018.02.15
RATIO_TO_REPORT()  (0) 2018.02.15
NTITLE()  (0) 2018.02.15
오라클 쿼리실행 시간 체크  (0) 2018.02.15
'DB/Oracle' 카테고리의 다른 글
  • 순위함수
  • 오라클 특수문자 검색
  • RATIO_TO_REPORT()
  • NTITLE()
공손(gongson)
공손(gongson)
모든건 나의 마음으로부터 나오는 것임을...
공손(gongson)
WEBGLE
공손(gongson)
전체
오늘
어제
  • 분류 전체보기 (163)
    • AI (1)
      • LangChain (1)
    • DB (49)
      • Oracle (36)
      • Mssql (13)
    • Language (30)
      • Java (8)
      • Jsp (3)
      • Javascript (4)
      • Nodejs (1)
      • Python (14)
    • Algorithm (0)
    • UIUX (3)
      • css (0)
      • html (2)
      • html5 (0)
      • bootstrap (1)
    • Server (5)
      • linux (3)
      • window (2)
    • WAS (2)
      • tomcat (2)
    • Framework (6)
      • spring (3)
      • ibatis (3)
    • Tools (7)
      • Eclipse (5)
      • Toad (1)
      • Git (0)
      • VS Code (1)
    • Office (2)
      • Excel (0)
      • browser (2)
    • 용어사전 (26)
    • 자료실 (5)
    • 강좌 (10)
      • javascript 기초 (10)
    • Etc (14)
      • 개발이야기 (4)
      • 좋은글 (4)
      • 기타 (6)

블로그 메뉴

  • 홈
  • 글쓰기
  • 태그

인기 글

태그

  • AI
  • AI용어
  • JavaScript
  • langchain
  • 오라클

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
공손(gongson)
패키지 내에서 사용 테이블 정보 출력
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.