27/03/2008, 11:13
|
| | Fecha de Ingreso: marzo-2008
Mensajes: 7
Antigüedad: 16 años, 9 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 |