Salut tout le monde,
Bon voila mon problème, j'essaie de faire une fonction qui recherche la position d'une chaine dans une autre chaine,
Il me semble avoir respecter la syntaxe informix mais lorsque je la compile, j'ai une erreur de syntaxe sur :
)
RETURNS integer;
J'ai essayé avec RETURNING mais ca ne fonctionne pas non plus.
Si vous voyez ce qui cloche merci de me le signaler.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 -- --------------------------------------------------- -- Fonction MG_FU_Instr -- NE, 24/04/2008 -- Paramètres : -- Ps_Chaine : Chaine dans laquelle on recherche -- Ps_ChaineRecherchee : Chaine recherchée -- ---------------------------------------------------------- -- Recherche de la position de la chaine Ps_ChaineRecherchee -- dans la chaine Ps_Chaine -- Retourne 0 si la chaine n'a pas ete trouvee CREATE FUNCTION MG_FU_Instr( Ps_Chaine VARCHAR, Ps_ChaineRecherchee VARCHAR, Pi_NbOccurence integer DEFAULT 1 ) RETURNS integer; DEFINE Vi_Indice, Vi_Pos, Vi_Taille, Vi_TailleRecherchee integer; LET Vi_TailleChaineRecherchee = LENGHT( Ps_ChaineRecherchee); LET Vi_Taille = LENGHT( Ps_Chaine ); IF ( Vi_Taille = 0 ) or ( Vi_TailleChaineRecherchee = 0 ) THEN RETURN 0; END IF; LET Vi_Pos = 0; FOR Vi_Indice = 1 TO Vi_Taille IF SUBSTR( Ps_Chaine, Vi_Indice, Vi_TailleChaineRecherchee ) = Ps_ChaineRecherchee THEN LET Vi_Pos = Vi_Indice; EXIT FOR; END IF; END FOR; RETURN Vi_Pos; END FUNCTION;
Partager