Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 06/11/2008 23:22:18
- YannT
- Membre
Syntaxe pour créer une fonction contenant des caractères réservés
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
#2 07/11/2008 00:05:48
- gleu
- Administrateur
Re : Syntaxe pour créer une fonction contenant des caractères réservés
$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