Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 20/10/2010 15:30:01
- titte64
- Membre
Utilisation de variable globale dans une clause where
Bonjour à tout le monde.
Je m'excuse par avance si ce sujet a déjà été traité, mais mes recherches ont été infructueuses.
Voilà mon soucis :
J'ai une variable globale qui contient une suite de mots séparés par des virgules
SET variable.globale = '''test1'',''test2'',''test3''';
Je souhaiterais utiliser cette variable dans une requête de la façon suivante:
SELECT * FROM maTable WHERE attribut IN (current_setting('variable_globale'));
Le problème, c'est que current_setting('variable_globale') me retourne un texte, or il me faudrait une liste de chaîne de caractères.
Avez-vous déjà rencontré ce cas d'utilisation, et si oui, comment l'avez-vous résolu.
Je sais que depuis postgreSQL 8.3 on peut utiliser la fonction regexp_split_to_table, mais mon programme tourne également sur des 8.2, donc je ne peux pas utiliser cette fonction.
Merci d'avance.
Titte
Hors ligne
#2 20/10/2010 15:43:37
- Marc Cousin
- Membre
Re : Utilisation de variable globale dans une clause where
La notation variable.globale ne marchera pas dans PostgreSQL 8.2 (il faut custom_variable_classes). Ça résout déjà le problème de ce point de vue
Ensuite, non, jamais rencontré ce contexte, il est un peu étrange. Je pense qu'il vaudrait mieux que vous exposiez ce que vous voulez finalement faire, plutôt que de se focaliser sur le début de solution technique sur lequel vous êtes parti. Avec un peu de chance, on pourra trouver une solution plus simple, ou plus appropriée.
Merci donc pour commencer d'expliquer ce que vous essayez de résoudre problème, sans faire d'hypothèse sur la méthode de résolution, j'espère qu'on aura une solution simple à vous proposer
Marc.
Hors ligne
#3 20/10/2010 16:38:16
- titte64
- Membre
Re : Utilisation de variable globale dans une clause where
Bonjour Marc,
Je te remercie pour avoir pris le temps de lire et répondre à ma question.
Pendant que je lisais ta réponse, j'ai été frappé d'une idée de solution qui m'a permis de contourner la solution que j'envisageais, comme tu me le conseillais.
Donc mon problème est résolu.
En revanche pour ton information, j'utilise la notation variable.globale en 8.2 sans aucun problème.
Titte
Hors ligne
#4 20/10/2010 16:43:51
- Marc Cousin
- Membre
Re : Utilisation de variable globale dans une clause where
J'ai cette erreur :
ERROR: unrecognized configuration parameter "variable.globale"
Quand je le fais sur une 8.2.17.
On parle bien de la même chose ? Un SET dans une session psql ?
Pas un \set ?
Marc.
Hors ligne
#5 20/10/2010 17:04:58
- titte64
- Membre
Re : Utilisation de variable globale dans une clause where
C'est tout à fait logique, tu essaies de 'setter' une variable 'variable.globale', qui n'existe pas.
Il faut d'abord définir 'variable' comme étant une custom_variable_classes, et ensuite tu peux faire :
SET variable.globale = 'test';
Titte
Hors ligne
#6 20/10/2010 17:22:55
- Marc Cousin
- Membre
Re : Utilisation de variable globale dans une clause where
Oui, tout à fait d'accord avec toi. Jene sais pas pourquoi, j'aurais juré que le custom_variable_classes n'existait pas en 8.2… Alors qu'il est apparu en 8.1. On s'y perd, avec toutes ces versions
Marc.
Hors ligne
#7 20/10/2010 17:35:29
- titte64
- Membre
Re : Utilisation de variable globale dans une clause where
M'en parle pas.
En ce moment, je tente de m'en sortir avec des serveurs en 8.2, 8.3 et 8.4.
Vivement les upgrades de versions.
Bonne soirée.
Titte
Hors ligne