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 38 39 40 41 42 43 44 45 46
   |  
FUNCTION FCT_TRT_E( X_STRING IN VARCHAR2 ) RETURN VARCHAR2 IS
	V_STRING 	VARCHAR2(255);
	V_STRING1 	VARCHAR2(255);
	V_STRING2 	VARCHAR2(2);
	V_LEN		NUMBER;
	V_NUM		NUMBER;
	V_NUM2		NUMBER;
BEGIN
	V_STRING := X_STRING;
 
	-- Libelle
	V_STRING := TRANSLATE ( V_STRING, 'àâ', 'aa' );
	V_STRING := TRANSLATE ( V_STRING, 'ç', 'c' );
	V_STRING := TRANSLATE ( V_STRING, 'éèêë', 'eeee' );
	V_STRING := TRANSLATE ( V_STRING, 'ïî', 'ii' );
	V_STRING := TRANSLATE ( V_STRING, 'ô', 'o' );
	V_STRING := TRANSLATE ( V_STRING, 'ùû', 'uu' );
	V_STRING := REPLACE( V_STRING, CHR(13), ' ' );
	V_STRING := REPLACE( V_STRING, CHR(10), ' ' );
 
	V_STRING := UPPER( V_STRING );
	V_STRING1 := '';
	IF ( V_STRING IS NOT NULL ) THEN
		V_LEN 	 := LENGTH( V_STRING );
		V_NUM 	 := 1;
		<<boucle1>>
		LOOP
		-- FOR V_NUM IN 1..V_LEN LOOP
			IF V_NUM > V_LEN THEN
				exit boucle1;
			END IF;
			V_STRING2 := substr( V_STRING, V_NUM, 1 );
			V_NUM2 := ascii( V_STRING2);
			IF ( ( V_NUM2 > 38 and V_NUM2 < 64 ) or ( V_NUM2 > 64 and V_NUM2 < 94 ) ) THEN
				V_STRING1 := V_STRING1 || V_STRING2;
			ELSE
				V_STRING1 := V_STRING1 || ' ';
			END IF;
			V_NUM := V_NUM +1;
		END LOOP boucle1;
		V_STRING := V_STRING1;
	END IF;
 
	return V_STRING ;
END FCT_TRT_E;  | 
Partager