Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/10/2009, 08:31
Avatar de 8vio
8vio
 
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años, 1 mes
Puntos: 6
Respuesta: creacion de procedure

jejeje estas de suerte:


Esta funcion hace lo mismo pero para separacione por , en el if (IF (SUBSTR(iCltinstanceIds,intCont,1)) = ',' THEN) cambia la coma por un ;. Lo unico es que el ultimo valor debe llevar un ; al final.


En esta variable se guardara cada string intCltinstanceId.

Estudialo y veras que es muy sencillo


Código:
DECLARE

intCont             INTEGER DEFAULT 1; -- Contador de caracteres de iCltinstanceIds
intPosIni           INTEGER DEFAULT 1; -- Posición inicial de cada string (contrato) por iteración
intPosFin           INTEGER DEFAULT 0; -- Posición final de cada string (contrato) por iteración
intExist            INTEGER DEFAULT 0; -- Validador de contratos 
iCltinstanceIds     VARCHAR2(64);
intCltinstanceId    VARCHAR2(64);  
BEGIN
   
   iCltinstanceIds := 'prueba1,prueba2,prueba3,';
   -- Verificamos cada caracter del string
   WHILE intCont <= LENGTH(iCltinstanceIds) LOOP
    
      -- si el caracter es una coma (,)
      IF (SUBSTR(iCltinstanceIds,intCont,1)) = ',' THEN

         -- Cada identificador contenido en iCltinstanceIds
         intCltinstanceId := trim(substr(iCltinstanceIds,intPosIni,intPosFin));
         DBMS_OUTPUT.PUT_LINE(intCltinstanceId);
         intPosIni := intCont + 1;          
         intPosFin := 0;
      
      -- Si el caracter actual no es coma (,) 
      ELSE  
            
         intPosFin := intPosFin + 1;
      
      END IF;
     
      intCont:= intCont+1;

   END LOOP;
   
END;

Saludos y suerte