PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#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

Pied de page des forums