DBMS/오라클

[Oracle] 특정 컬럼의 특정 데이터로 모든 테이블 조회하는 프로시저 만들기

미도반 2022. 12. 1. 17:20

Tool : sqldeveloper

 

■ Sql developer 로 프로시저 실행

# Devleoper 에서 실행

EXEC 프로시저명

Ex. EXEC find_table('NO_CONTRACT','19S100688');

 

■ 프로시저 내용

create or replace PROCEDURE FIND_TABLE
(
columnName VARCHAR2
, columnValue VARCHAR2
)
IS
  v_count  VARCHAR2(100);
    v_table_name  VARCHAR2(200);
    v_sql  VARCHAR2(200);
    
  
BEGIN

DBMS_OUTPUT.Enable(1000000);

DBMS_OUTPUT.PUT_LINE('컬럼이름 : '||columnName);

FOR table_list IN ( select table_name from all_tab_columns where owner = 'KAWF_USER_221110' and column_name = columnName) 

LOOP
  
  v_table_name := table_list.table_name;
--  DBMS_OUTPUT.PUT_LINE('select count(*) from '|| v_table_name|| ' where '||columnName||' = '''||columnValue||''';');
  v_sql := 'select count(*) from '|| v_table_name|| ' where '||columnName||' = '''||columnValue||'''';
  EXECUTE IMMEDIATE v_sql into v_count;
  
IF 

v_count > 0

THEN 

DBMS_OUTPUT.PUT_LINE('select * from '||table_list.table_name||' where '||columnName||' = '''||columnValue||''';') ;

END IF;

END LOOP;



END FIND_TABLE;

 

 

 프로시저 추가

1. 유저 선택 > 프로시저 마우스 우 클릭 > 새 프로시저 클릭.

 

2. 프로시저 명 입력 후 확인.

 

3. 위 프로시저 붙여넣고 저장하면 컴파일 됨.

 

 결과 확인 하는 방법

1. 보기 > DBMS 출력 클릭

 

2. 하단에 해당 출력 창 뜸. + 버튼 클릭.

 

3. 프로시저 실행 할 유저 선택