DB2 procedure
language/DB 2013. 8. 16. 13:30CREATE PROCEDURE PRC_TNINFO (P_USER VARCHAR2(20), P_DB_ID NUMBER(20), P_TM VARCHAR2(14)) IS
v_state varchar2(1000) := '';
v_TABLE_NM varchar2(500) := ' ';
v_TABLE_NM2 varchar2(500) := ' ';
v_TABLE_ID NUMBER(20);
v_COLUMN_ID NUMBER(20);
v_COLUMN_NM varchar2(500) := '';
v_COLUMN_KOREAN_NM varchar2(500) := '';
v_DATA_TY varchar2(500) := '';
v_DATA_LT number(4);
v_DCMLPOINT_LT number(4);
v_sql varchar2(500) := '';
TYPE CurTyp IS REF CURSOR;
cv1 CurTyp;
i_t number := 0;
i_c number := 0;
BEGIN
v_sql := ' SELECT TABLE_NM,COLUMN_NM , COLUMN_KOREAN_NM, DATA_TY, DATA_LT, DCMLPOINT_LT FROM PDQM.TNTABLECOLUMNINFO '
|| ' WHERE REGISTER_ID = :1 AND DATABASE_ID= :2 ' ;
IF cv1%ISOPEN
THEN CLOSE cv1;
END IF;
OPEN cv1 FOR v_sql using P_USER, P_DB_ID;
LOOP
FETCH cv1 INTO v_TABLE_NM, v_COLUMN_NM ,v_COLUMN_KOREAN_NM, v_DATA_TY, v_DATA_LT ,v_DCMLPOINT_LT ;
EXIT WHEN cv1%NOTFOUND;
IF (v_TABLE_NM <> v_TABLE_NM2) then
BEGIN
v_TABLE_ID:= SEQ_M_TABLEID.NEXTVAL;
i_t := i_t + 1;
i_c := 0;
INSERT INTO TNTABLEINFO (TABLE_ID, DATABASE_ID, TABLE_NM, SORT_ORDR)
VALUES (v_TABLE_ID, P_DB_ID, v_TABLE_NM , i_t);
END;
END IF;
v_TABLE_NM2 := v_TABLE_NM;
BEGIN
v_COLUMN_ID := SEQ_M_COLUMNID.NEXTVAL;
i_c := i_c + 1;
INSERT INTO TNCOLUMNINFO
(COLUMN_ID, TABLE_ID, COLUMN_NM, COLUMN_KOREAN_NM, DATA_TY, DATA_LT, DCMLPOINT_LT, SORT_ORDR)
VALUES (v_COLUMN_ID, v_TABLE_ID, v_COLUMN_NM, v_COLUMN_KOREAN_NM, v_DATA_TY, v_DATA_LT ,v_DCMLPOINT_LT, i_c);
END;
END LOOP;
IF cv1%ISOPEN
THEN CLOSE cv1;
END IF;
BEGIN
DELETE FROM TNTABLECOLUMNINFO
WHERE REGISTER_ID = P_USER
AND DATABASE_ID = P_DB_ID;
END;
END;
'language > DB' 카테고리의 다른 글
sql 정규식 (0) | 2013.09.26 |
---|---|
여러행을 한줄로 (0) | 2013.09.26 |
merge 문 (0) | 2013.09.25 |
sequence reset sequence (0) | 2013.09.10 |
ORA-01502 오류 (0) | 2013.07.26 |