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

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 (view raw or flat)
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

pgsql-fr-generale by date

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

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