pgsql : relation does not exist ==> uniquement en postgres 7.4 !
- From: "claude C." <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: Mon, 21 Nov 2005 18:01:16 +0100
- Message-id: <4381FD5C(dot)9090707(at)free(dot)fr>
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;
Home |
Main Index |
Thread Index