Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/06/2005, 11h51   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2004
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 19
Points : 10
Points : 10
Par défaut [ PL/pgSQL ] Passage de paramètres et nom de table

Bonjour à tous,

J'ai une petite question à vous poser :
Si, je crée une fonction prenant comme paramètre une variable de type "text", est ce que je peux utiliser cette variable comme nom de table pour mes select ?

Par exemple :

Code :
1
2
3
4
5
6
7
8
 
CREATE FUNCTION foo(text) returns integer AS '
declare
	tablename alias for $1;
begin	
select into resId id from tablename where ...;
 
(...)
Pour l'instant ça marche pas des masses chez moi, ya t-il une 'bonne' méthode pour y arriver ?
Dam)rpgheaven est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2005, 12h08   #2
Membre régulier
 
Avatar de champijulie
 
Inscription : mai 2005
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 147
Points : 92
Points : 92
Je pense que ça doit marcher. En tous cas, quand tu déclares la fonction, ça compile.

Voilà.
@+
champpijulie
champijulie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2005, 12h34   #3
Membre habitué
 
Inscription : mai 2002
Messages : 131
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 131
Points : 142
Points : 142
Pour créer des requêtes dynamiquement, il faut utiliser la commande EXECUTE
Quentin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2005, 14h34   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2004
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 19
Points : 10
Points : 10
Merci bien

Jdonne la réponse pour ceux qui auraient le même problème avec la flemme de chercher :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
CREATE FUNCTION foo(text) returns integer AS '
declare
tablename alias for $1;
rec RECORD;
begin   
 
FOR rec IN EXECUTE('SELECT id FROM' || tablename || ' WHERE ..) LOOP
resId := rec.id;
END LOOP;
 
(...)
Dam)rpgheaven est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h36.


 
 
 
 
Partenaires

Hébergement Web