Bonjour

J'utilise PGAdmin 3 et j'essaie d'adapter une fonction PL/SQL vers PL/pgSQL.

Voilà la fonction telle qu'elle est :
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
create or replace function fn_nbmots(pi_s_titre IN varchar) RETURNS numeric AS 
$body$
 
DECLARE
  result numeric;
  l_s_titre  varchar(100);
  l_n_nbespace numeric;
  l_n_posespace numeric;
 
BEGIN
  l_n_posespace := 0;
  l_n_nbespace := 0;
  l_s_titre := ltrim( rtrim( pi_s_titre));
 
  l_n_posespace := instr( l_s_titre, ' ');
  WHILE l_n_posespace <> 0 loop
      l_n_nbespace := l_n_nbespace +1;      
      l_s_titre := substr( l_s_titre, l_n_posespace + 1, 200);
      l_n_posespace := instr( l_s_titre, ' ');
      exit when l_n_posespace = 0;
  END loop;
 
  result := l_n_nbespace +1;
  RETURN(result);
END;
$body$
LANGUAGE plpgsql;
Mon problème, pour l'instant, c'est que j'ai un message d'erreur qui dit :
État SQL :42883
Astuce : No function matches the given name and argument types. You may need to add explicit type casts.
Contexte : PL/pgSQL function "fn_nbmots" line 13 at assignment
Lorsque je tente de l'appeler.

Voilà le code d'appel que j'utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT * FROM fn_nbmots('la vie est belle');
Le but de cette fonction est de compter le nombre de mots d'une chaîne.

Merci de votre aide