Skip site navigation (1) Skip section navigation (2)

Re: récupérer le type depuis une variable

From: Paul Mackay <mackaypaul(at)gmail(dot)com>
To: dforums <dforums(at)vieonet(dot)com>, pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: récupérer le type depuis une variable
Date: 2006-02-04 22:08:24
Message-ID: 786c2f6d0602041408p2bcf6cf1v46db00290e5a3f75@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-fr-generale
David,

Si je comprends bien, tu souhaites récupérer un enregistrement d'une table
dont le nom est passé en paramètre. Cela peut se faire en combinant
l'utilisation du type RECORD et de la commande EXECUTE. Celle-ci permet
d'exécuter des requêtes dynamiques. On ne peut y exécuter un SELECT INTO, il
faut plutôt utiliser la clause INTO de EXECUTE. (cf.
http://www.postgresql.org/docs/8.1/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
).

Voici un exemple d'une fonction de ce genre. Cette fonction reçoit un nom de
table en paramètre. Cette table doit avoir un champ "id" de type int (ou
compatible) et avoir une colonne oid. La fonction retourne le oid de
l'enregistrement dont l'id est égale à 1 (celui-ci pourrait passé en
paramètre bien sûr).

CREATE OR REPLACE FUNCTION func_exec (text) RETURNS integer AS $$
DECLARE
in_table ALIAS FOR $1;
rec RECORD;

BEGIN
   EXECUTE 'SELECT * FROM ' || in_table || ' WHERE id=1' INTO rec;

   RETURN rec.oid;

END;
$$ LANGUAGE plpgsql;

A+,
Paul

On 2/4/06, dforums <dforums(at)vieonet(dot)com> wrote:
>
> Bonjour
>
> J'aurais besoin de récupérer le type d'une table passé en paramétre
> d'une procédure, et je ne sais pas comment m'y prendre.
>
> create function (VARCHAR) ....
> declare
> in_table ALIAS FOR $1;
>
> tableType in_table%ROWTYPE;
>
> Begin
> SELCT INTO tableType ...
> END;
> ...
>
> voila ce que j'aimerais arrivé a faire.
>
> Pour information complémentaire je souhaite pouvoir appeller cette
> procedure d'un script externe ou d'une autre procedure.
>
> cordialement
>
> david
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Have you searched our list archives?
>
>                http://archives.postgresql.org
>

In response to

Responses

pgsql-fr-generale by date

Next:From: dforumsDate: 2006-02-05 16:24:04
Subject: Re: récupérer le type
Previous:From: dforumsDate: 2006-02-04 10:02:02
Subject: récupérer le type depuis une variable

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group