1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
DECLARE
TYPE typ_tab_varchar IS TABLE OF VARCHAR2(500) ;
tab_ligne typ_tab_varchar := typ_tab_varchar();
v_ligne VARCHAR2(500) ;
v_debut NUMBER := 1;
v_fin NUMBER:= 1;
v_aux VARCHAR2(500);
cont NUMBER;
--ret varchar2(100) := NULL;
BEGIN
v_ligne:= 'FR;9999;NISSAN;;';
cont := REGEXP_COUNT(v_ligne, ';', 1); -- contge du nombre de ;
dbms_output.put_line('******cont****** ' || cont );
FOR i IN 1 .. cont LOOP
---
WHILE v_fin > 0 LOOP
tab_ligne.EXTEND();
v_fin := INSTR(v_ligne, ';',v_debut);
IF v_fin <> 0 THEN
v_aux:= substr(v_ligne, v_debut, (v_fin-v_debut) );
-- dbms_output.put_line('******v_aux****** ' || v_aux);
-- dbms_output.put_line('tab_ligne(i) ' || v_aux);
tab_ligne(tab_ligne.last) := v_aux;
v_debut := v_fin+1;
ELSE ---
v_aux:= substr(v_ligne, v_debut, (LENGTH(v_ligne)-(v_debut-1)) );
tab_ligne(tab_ligne.last) := v_aux;
END IF;
END LOOP;
END LOOP; |
Partager