Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Search

Free tool

Look and Feel Project

6 décembre 2005 2 06 /12 /décembre /2005 16:57
This is a small function that allows to extract tokens from a string.

CREATE OR REPLACE FUNCTION Split
(

   PC$Chaine
IN VARCHAR2,
         -- input string
   PN$Pos
IN PLS_INTEGER,
         -- token number
   PC$Sep
IN VARCHAR2 DEFAULT ','
-- separator character
)
RETURN
VARCHAR2
IS
  LC$Chaine VARCHAR2(32767) := PC$Sep || PC$Chaine
;
  LI$I      PLS_INTEGER
;
  LI$I2     PLS_INTEGER
;
BEGIN
  LI$I := INSTR( LC$Chaine, PC$Sep, 1, PN$Pos )
;
  IF LI$I > 0
THEN
    LI$I2 := INSTR( LC$Chaine, PC$Sep, 1, PN$Pos + 1)
;
    IF LI$I2 = 0 THEN LI$I2 := LENGTH( LC$Chaine ) + 1 ; END IF
;
    RETURN( SUBSTR( LC$Chaine, LI$I+1, LI$I2 - LI$I-1 ) )
;
  ELSE
    RETURN NULL
;
  END IF
;
END;

/



SQL> DECLARE
  2    LC$String  VARCHAR2(50) := 'one|two|three|four|five|six|seven' ;
  3    LC$Token
   VARCHAR2(100) ;
  4    i          PLS_INTEGER := 1 ; 
  5  BEGIN
  6    LOOP
  7      LC$Token := Split( LC$String, i , '|') ;
  8      EXIT WHEN LC$Token IS NULL ;
  9      dbms_output.put_line( LC$Token ) ;
 10      i := i + 1 ;
 11    END LOOP ;
 12  END ;
 13 
 14  /
one
two
three
four
five
six
seven

Procédure PL/SQL terminée avec succès.

SQL>

Francois

Partager cet article

Repost 0
Francois Degrelle - dans Oracle PL-SQL
commenter cet article

commentaires