Articles Oracle Forms, PL/SQL, Java, J2EE
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