Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/03/2008, 11:13
Sonic_plsql
 
Fecha de Ingreso: marzo-2008
Mensajes: 7
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Retorno De Carro, Salto De Linea En Plsql

Esta ha sido mi solución final

DECLARE

v_file CLOB := 'IDSHP|CAMPO1|CAMPO2|CAMPO3|CAMPO4|CAMPO5|CAMPO6|C AMPO7|'||CHR(10)||CHR(13)||'1|REG1|REG2|REG3|REG4| REG5| REG6|REG7|'||CHR(10)||CHR(13);

v_texto_linea VARCHAR2(4000);
v_long INTEGER;
v_contini PLS_INTEGER;
v_initline PLS_INTEGER;
v_salto VARCHAR2(10);
v_chunk_size INTEGER := 0;
v_cont PLS_INTEGER;
v_campo_idshp VARCHAR2(32);

BEGIN

v_cont := 1;
v_contini := 0;
v_initline := 1;
v_salto :=CHR(10)||CHR(13); --salto de carro

LOOP

v_contini := DBMS_LOB.INSTR(v_file,v_salto,v_initline,1);

v_chunk_size := v_contini - v_initline;

DBMS_LOB.READ(v_file,
v_chunk_size,
v_initline,
v_texto_linea);

v_long := DBMS_LOB.GETLENGTH(v_texto_linea);

v_initline := v_contini + 2;

IF v_cont = 1 THEN

v_campo_idshp := SUBSTR(v_texto_linea, 1, INSTR(v_texto_linea, '|') - 1);
v_texto_linea := SUBSTR(v_texto_linea, INSTR(v_texto_linea, '|') + 1, LENGTH(v_texto_linea));

END IF;

dbms_output.put_line(v_campo_idshp);
dbms_output.put_line(v_texto_linea);

END LOOP;
END;

Bueno puedo ir quedandome con los nombres de campo o registros que necesite leyendo desde cada separador de campo "|", si quiero ir a que me desglose los registros tendre que meter un contador en el loop y sumando 1 (cont := cont +1).

Y me ha funcionado bien , de nuevo gracias a los que me han ayudado