Re: récupérer le type

From: dforums <dforums(at)vieonet(dot)com>
To: Paul Mackay <mackaypaul(at)gmail(dot)com>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: récupérer le type
Date: 2006-02-05 16:24:04
Message-ID: 43E626A4.8000404@vieonet.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour

non en faite c pas ça.

voila un autre exemple :
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;
--et c la que ça ce complique comment faire pour ?

EXECUTE 'select * FROM othertable where other_id=rec.????_id';

END;
$$ LANGUAGE plpgsql;

Maintenant j'espère que c plus simple. Comment je fait pour récupérer le
nom du champ(les ?), qui peut varier d'une table à l'autre.

C'est super urgent et important, pour moi, merci.

David

On 2/4/06, *dforums* <dforums(at)vieonet(dot)com <mailto: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;
...

Paul Mackay a écrit :
> 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
> <mailto: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

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Synthèse Graphique 2006-02-10 08:36:54 Compiler trigger en C sous Windows
Previous Message Paul Mackay 2006-02-04 22:08:24 Re: récupérer le type depuis une variable