Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 14/04/2014 15:50:08
- pljavabruno
- Membre
Problème avec une requete plpgsql
Bonjour à tous et à toutes,
je débute dans le développement des procédures plpgsql et j'aimerais savoir ce qui ne va pas sur ma petite requête suivante.
CREATE FUNCTION nb_mission() RETURNS integer AS
$$
BEGIN
RETURN SELECT COUNT(*) FROM mission;
END;
$$
LANGUAGE plpgsql;
j'aimerais retourner le nombre de ligne totale de ma table.
Merci pour votre contribution.
Hors ligne
#2 14/04/2014 16:04:14
- gleu
- Administrateur
Re : Problème avec une requete plpgsql
Comme indiqué dans la documentation (http://docs.postgresql.fr/9.3/plpgsql-c … tures.html) :
* soit on renvoie une expression
CREATE FUNCTION nb_mission() RETURNS integer AS
$$
DECLARE
total integer;
BEGIN
SELECT INTO total COUNT(*) FROM mission;
RETURN total;
END;
$$
LANGUAGE plpgsql;
* soit on retourne le résultat d'une requête
CREATE FUNCTION nb_mission() RETURNS integer AS
$$
DECLARE
total integer;
BEGIN
RETURN QUERY SELECT COUNT(*) FROM mission;;
END;
$$
LANGUAGE plpgsql;
Guillaume.
Hors ligne
#3 14/04/2014 16:11:27
- ruizsebastien
- Membre
Re : Problème avec une requete plpgsql
Bonjour,
essayez ça :
CREATE OR REPLACE FUNCTION nb_mission() RETURNS integer AS
$$
DECLARE
count_total integer;
BEGIN
SELECT COUNT(*) FROM mission into count_total;
return count_total;
END;
$$
LANGUAGE plpgsql;
Cordialement,
Sébastien.
Hors ligne
#4 14/04/2014 16:12:36
- ruizsebastien
- Membre
Re : Problème avec une requete plpgsql
trop rapide Guillaume...
désolé pour le doublon.
Cordialement,
Sébastien.
Hors ligne
#5 14/04/2014 16:19:20
- pljavabruno
- Membre
Re : Problème avec une requete plpgsql
Merci pour ta disponibilité,
* soit on retourne le résultat d'une requête
ce second cas renvoie l’erreur suivant:
ERREUR: ne peut pas utiliser RETURN QUERY dans une fonction non SETOF
LINE 6: RETURN QUERY SELECT COUNT(*) FROM mission;;
^
********** Erreur **********
ERREUR: ne peut pas utiliser RETURN QUERY dans une fonction non SETOF
État SQL :42804
Caractère : 81
Hors ligne
#6 14/04/2014 16:58:25
- ruizsebastien
- Membre
Re : Problème avec une requete plpgsql
essaye ça :
CREATE or replace FUNCTION nb_mission() RETURNS setof bigint AS
$$
BEGIN
RETURN QUERY SELECT COUNT(*) FROM mission;
END;
$$
LANGUAGE plpgsql;
Pour executer :
select * from nb_mission();
Cordialement,
Sébastien.
Hors ligne
#7 14/04/2014 22:31:54
- gleu
- Administrateur
Re : Problème avec une requete plpgsql
Dans ce cas, mieux vaut passer par la variable qui contient le résultat à envoyer.
Guillaume.
Hors ligne
Pages : 1