CREATE OR REPLACE PROCEDURE PROC_CONVERT_TABLE
(
P_USER_NAME IN VARCHAR2,
P_TABLE_NAME IN VARCHAR2
)
IS
tmpVar NUMBER;
P_CO_NAME VARCHAR2(200);
P_STR_SQL VARCHAR2(4000);
/******************************************************************************
NAME: PROC_CONVERT_TABLE
PURPOSE:
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2009-06-18 1. Created this procedure.
NOTES:
Automatically available Auto Replace Keywords:
Object Name: PROC_CONVERT_TABLE
Sysdate: 2009-06-18
Date and Time: 2009-06-18, 오전 9:09:45, and 2009-06-18 오전 9:09:45
Username: (set in TOAD Options, Procedure Editor)
Table Name: (set in the "New PL/SQL Object" dialog)
******************************************************************************/
CURSOR c1 IS
select column_nm.column_name
from user_tables, (
select table_name, column_name, data_type,data_length
from All_tab_columns
where owner = P_USER_NAME
) column_nm
where user_tables.table_name = column_nm.table_name
and user_tables.table_name like P_TABLE_NAME
and column_name not in ('SMN', 'AY', 'FN');
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO P_CO_NAME;
EXIT WHEN c1%NOTFOUND;
BEGIN
P_STR_SQL := 'INSERT INTO TEMP_2 '
|| ' SELECT SMN, AY, FN, ' || '''' ||P_CO_NAME|| ''', '
|| ' MAX(DECODE('||P_CO_NAME||', '||P_CO_NAME||', '||P_CO_NAME||')) '
|| ' FROM TEMP '
|| ' GROUP BY SMN, AY, FN '
|| ' ORDER BY SMN';
EXECUTE IMMEDIATE P_STR_SQL; //쿼리를 동적으로 생성하여 처리할 수 있다.
END;
END LOOP;
CLOSE c1;
tmpVar := 0;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END PROC_CONVERT_TABLE;
/


::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::