DB2 procedure

language/DB 2013. 8. 16. 13:30

CREATE 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
: