테이블명 가지고 crud쿼리문을 자동으로 생성해주는 툴 같은게 있는지 찾아보다가.. 마땅치않아서
잊혀져가는 oracle stored procedure 사용법 상기시킬겸 select 쿼리문만 자동으로 생성되도록 작성해봤다.
예제는 입력파라미터로 테이블영문명을 받고, 결과로 dbms콘솔에 select쿼리문이 출력된다.
create or replace procedure generateSELECT
( pTableName IN ALL_TAB_COMMENTS.TABLE_NAME%TYPE)
is
-- 로컬변수 선언
allTabColumns ALL_TAB_COLUMNS%rowtype;
allColComments ALL_COL_COMMENTS%rowtype;
vcnt number;
vstr varchar2(500);
-- 커서 선언
cursor columnCursor
is
SELECT A.COLUMN_NAME, A.DATA_TYPE, A.DATA_DEFAULT
, B.COMMENTS
FROM ALL_TAB_COLUMNS A
INNER JOIN ALL_COL_COMMENTS B
ON A.TABLE_NAME = B.TABLE_NAME
AND A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_NAME = pTableName
ORDER BY A.COLUMN_ID ASC;
begin
-- 수행로직
dbms_output.put_line('테스트 프로시져 입니다.');
vcnt := 0;
-- 커서오픈
open columnCursor;
-- 루프시작
loop
fetch columnCursor into allTabColumns.COLUMN_NAME, allTabColumns.DATA_TYPE, allTabColumns.DATA_DEFAULT, allColComments.COMMENTS;
exit when columnCursor%NOTFOUND;
if vcnt = 0 then
vstr := 'SELECT '||allTabColumns.COLUMN_NAME || ' /* ' ||allTabColumns.COLUMN_NAME ||' */';
else
vstr := ' ,'||allTabColumns.COLUMN_NAME || ' /* ' ||allTabColumns.COLUMN_NAME ||' */';
-- 첫번째에만 , 안붙이고 이외에는 ,를 앞에 붙여준다.
-- LOOP 다돌면 FROM 테이블명으로 해준다. TABLE명은 INPUT으로 받아온다.
end if;
DBMS_OUTPUT.put_line(vstr);
vcnt := vcnt + 1;
end loop;
DBMS_OUTPUT.put_line('FROM '||pTableName);
-- 커서 닫아줌.
close columnCursor;
end ;
/
execute generateSELECT('TBL_BOARD');
- DMBS 출력 결과(sql developer)
'데이터베이스 > Oracle' 카테고리의 다른 글
[오라클] EXISTS 활용 예제 (0) | 2019.05.10 |
---|---|
오라클 계정생성 (0) | 2019.05.08 |
Java 코드, Oracle stored procedure의 성능 비교 (1) | 2016.05.24 |
Oracle cursor (0) | 2016.05.12 |
Oracle Stored Procedure (0) | 2016.05.12 |