Re: Noms de variable dynamiques

From: Samuel ROZE <samuel(dot)roze(at)aliceadsl(dot)fr>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Noms de variable dynamiques
Date: 2009-09-15 19:56:21
Message-ID: 1253044581.11394.149.camel@samuel-laptop
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Merci énormément à Dimitri et Guillaume, voici "la" solution, qui n'est
en fait pas réellement une solution mais un workarround pour une cette
fonctionnalité qui n'est pas implantée...

Dans Pl/PgSQL, soient:
- NEW, la nouvelle ligne (automatique avec les trigger INSERT / UPDATE)
- v_critere, le nom du champ de la ligne à récupérer
- v_value, la variable dans laquelle on met la valeur
- monschema.matable, le nom de la table sur laquelle est le trigger

EXECUTE 'SELECT (' || quote_literal(NEW) || '::monschema.matable).' ||
v_critere INTO v_value;

Cordialement,
Samuel ROZE.

Le dimanche 13 septembre 2009 à 22:58 +0200, Samuel ROZE a écrit :
> Bonjour à tous,
>
> Dans une fonction trigger, je voudrais accèder à différents champs de
> "NEW" de manière dynamique.
>
> En gros, j'ai une variable "v_fieldname" qui contient "champ1" par
> exemple. J'aimerais pouvoir accèder à la valeur du champ "champ1" et
> cette manière:
>
> NEW.v_fieldname
>
> Seulement, j'ai l'erreur:
>
> ERREUR: la colonne « v_fieldname » n'existe pas
>
> Néanmoins, j'ai trouver un patch très intéressant:
> http://archives.postgresql.org/pgsql-patches/2005-07/msg00293.php
>
> Il propose d'accèder aux données d'un record de manière:
> record%v_fieldname
>
> Mais, au fil de la discution, à partir de ce patch là:
> http://archives.postgresql.org/pgsql-patches/2005-07/msg00293.php
>
> La synthaxe est:
> record.(v_fieldname)
>
> Puis, le patch devrait être ajouté à la version 8.2:
> http://archives.postgresql.org/pgsql-patches/2005-07/msg00600.php
>
> Seulement, j'ai essayer ces deux méthodes, ça ne marche pas...
> Est-ce que ce patch a-t-il réellement été ajoutée à la 8.2 (j'ai la 8.3) ?
> Il y a-t-il eu un nouvelle synthaxe ?
>
> Merci d'avance.
> Cordialement, Samuel.
>
>

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message damien clochard 2009-09-15 22:09:27 Re: Comment utilisez-vous PostgreSQL ?
Previous Message Guillaume Lelarge 2009-09-15 18:41:31 Re: Noms de variable dynamiques