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