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 Re : PL/pgSQL » Problème avec time » 12/05/2013 01:30:10

Merci pour cette réponse ! C'est vrai que je n'avais pas fait le distingo entre les deux types c'est une erreur de ma part, je débute smile Du coup j'ai seulement changé l'heure de la variable 'heure_debut' qui est donc maintenant un 'interval'. Merci encore !

Bonne soirée.

#2 PL/pgSQL » Problème avec time » 10/05/2013 02:20:22

newkek
Réponses : 2

Bonjour, je débute en pl/pgsql j'ai une petite question (petite ne veux pas dire importante ! smile ) je crée deux variables qui sont des variables de type de 'time', et je n'arrive pas à les additionner l'une avec l'autre...

Le code :

create or replace function heure_attribuee(pid_tournois integer, pcategorie integer)
returns time
as $$
declare
heure_retour time;
heure_debut time;
equipe_inscrite record;
begin
    if (pcategorie = 1)
    then heure_retour:='00:00';
    elsif (pcategorie = 2) then heure_retour:='02:00';
    elsif (pcategorie = 3) then heure_retour:='04:00';
    else heure_retour:='00:00';
    end if;
    for equipe_inscrite in select IdEquipe from equipe where IdCategorie=pcategorie loop
    heure_retour:=heure_retour + '00:05';

    end loop;
    heure_debut:=(select heuredebut from tournois where IdTournois=pid_tournois);
    heure_retour:=heure_retour+heure_debut;
    return heure_retour;
end;
$$ language plpgsql;


Voilà et postgres me bloque lors de l'appel de cette fonction, au niveau de l'addition des deux heures... Il me dit que je dois caster clairement les deux types des variables:

PL/pgSQL function triggerfunc_add_inscription() line 6 at assignment
ERROR:  operator is not unique: time without time zone + time without time zone
LINE 1: SELECT heure_retour+heure_debut
                                ^
HINT:  Could not choose a best candidate operator. You might need to add explicit type casts.
QUERY:  SELECT heure_retour+heure_debut

J'ai donc essayé :

heure_debut:=cast((select heuredebut from tournois where IdTournois=pid_tournois) as time);
heure_retour:=cast(heure_retour+heure_debut as time);

Mais rien n'y fait, auriez-vous une solution svp ?

Merci, bonne soirée !

Pied de page des forums

Propulsé par FluxBB