pgsql : relation does not exist ==> uniquement en postgres 7.4 !

From: "claude C(dot)" <claude(dot)di(dot)pg(at)free(dot)fr>
To: liste PostgreSql FR <pgsql-fr-generale(at)postgresql(dot)org>
Subject: pgsql : relation does not exist ==> uniquement en postgres 7.4 !
Date: 2005-11-21 17:01:16
Message-ID: 4381FD5C.9090707@free.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

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;

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message david bigand forum 2005-11-22 09:51:37 RE: [pgsql-fr-generale] tableau procédure
Previous Message P.M 2005-11-20 13:16:11 Re: IF EXISTS