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;
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 |