Re: pgsql : relation does not exist ==> uniquement

From: "thomas(dot)silvi" <thomas(dot)silvi(at)laposte(dot)net>
To: "claude C(dot)" <claude(dot)di(dot)pg(at)free(dot)fr>
Cc: liste PostgreSql FR <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: pgsql : relation does not exist ==> uniquement
Date: 2005-11-22 21:05:33
Message-ID: 4383881D.90803@laposte.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale


Hello,
c'est apparement une limitation de la version 7.4.

voir mail de la mailing list pgsql-sql qui relate plus ou moins le meme
probleme.

http://archives.postgresql.org/pgsql-sql/2004-06/msg00014.php

une solution : migrer vers une 8.*

Thomas

claude C. a écrit :

> Bonjour.
>
> Voici une procédure stockée qui fonctionne parfaitement sur la version
> 8 de postgresql.
> Malheureusement, mon serveur de production est en 7.4. Et là, j'ai
> l'erreur suivante :
> ERROR: relation "un_article" does not exist
> CONTEXTE : PL/pgSQL function "liste_complete_articles" line 29 at
> select into variables
>
> C'est la ligne liste_articles_avec_description (un_article.*,
> id_description); qui pose problème (elle ne fait que concaténer
> différents éléments pour la version 7.4 d'ailleurs)
> Si je remplace un_article.* par un_article, celui-ci est vu comme un
> nom de colonne et pose alors problème.
> Après avoir relu les docs je ne vois toujours pas où se situe le
> problème.
> Une piste ?
> Merci à vous.
>
> Claude C.
>
> Présupposé :
> les types article et article_completement_decrit sont bien déclarés et
> existants.
>
> Voici ma procédure :
>
> create or replace function liste_complete_articles (integer, date,
> date, integer [], varchar)
> returns setof description_article as '
> declare
> id_de_personne alias for $1;
> debut_de_periode alias for $2;
> fin_de_periode alias for $3;
> ids_des_articles alias for $4;
> etendue alias for $5;
> i integer;
> id_description integer;
> un_article article;
> un_article_decrit article_completement_decrit;
> begin
> -- parcours de la liste des articles
> i := 1;
> while ids_des_articles [i] is not null loop
> id_un_article := ids_des_articles [i];
> if lower (etendue) = ''tous'' then
> for un_article
> in select *
> from liste_article_client_sur_periode
> (id_un_client, debut_de_periode, fin_de_periode)
> loop
> select *
> into un_article_decrit
> from liste_articles_avec_description
> (un_article.*, id_description);
> return next un_article_decrit;
> end loop;
> else
> select *
> into un_article
> from liste_article_client_sur_periode
> (id_un_client, debut_de_periode, fin_de_periode)
> order by date_commande desc
> limit 1
> ;
> select *
> into un_article_decrit
> from liste_articles_avec_description (un_article.*,
> id_description);
>
> -- on ne renvoie que des lignes qui existent !
> if un_article_decrit.id is not null then
> return next un_article_decrit;
> end if;
> end if;
> i := i + 1;
> end loop;
> return;
> end;
> ' language plpgsql;
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Have you searched our list archives?
>
> http://archives.postgresql.org
>

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message david bigand forum 2005-11-23 13:36:00 appel de procédure
Previous Message thomas.silvi 2005-11-22 19:33:48 Re: tableau procédure