Vous n'êtes pas identifié(e).
Bonjour,
Commençant tout juste à me former sur Postgres je rencontre un problème de syntaxe pour créer une fonction
Le but de la fonction est de compter le nombre de lignes commençant par une chaîne et de renvoyer le résultat :
voici la syntaxe que j'ai utilisé :
CREATE OR REPLACE FUNCTION nouvelindex(text)
RETURNS bigint AS
$BODY$
SELECT COUNT(*) FROM auteur WHERE idaut LIKE '$1%'
$BODY$
LANGUAGE 'sql';
Cette fonction ne fonctionne pas et renvoie toujours 0 :
select nouvelindex('STEI');
nouvelindex
-------------
0
(1 ligne)
alors que lancé à la main j'obtiens bien le bon résultat :
select count(*) from auteur where idaut like 'STEI%';
count
-------
1
(1 ligne)
Je suppose qu'il s'agit d'échapper les ' ou le % mais je n'y arrive pas
quelqu'un a une idée ?
Merci d'avance
Hors ligne
$1 étant entre guillemet, il fait partie de la chaîne et n'est pas remplacé. Il faut donc l'écrire ainsi :
CREATE OR REPLACE FUNCTION nouvelindex(text)
RETURNS bigint AS
$BODY$
SELECT COUNT(*) FROM auteur WHERE idaut LIKE $1||'%'
$BODY$
LANGUAGE 'sql';
Guillaume.
Hors ligne