| 12
 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