Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
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 30/05/2011, 01h35   #1
Invité de passage
 
Ingénieur sécurité
Inscription : mai 2011
Messages : 8
Détails du profil
Informations professionnelles :
Activité : Ingénieur sécurité

Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
Par défaut fonction pl pgsql

es ce que vous savez comment passer en paramètre d'une fonction pl pgsql un attribut d table ou nom de table?
merci
lioneleder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 08h53   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Comme n'importe quel autre paramètre, mais de type VARCHAR(n) avec n = 63 si vous n'avez pas modifié la longueur des noms des objets pour la compilation.
Puis exécuter votre requête finale en SQL dynamique.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 11h29   #3
Invité de passage
 
Ingénieur sécurité
Inscription : mai 2011
Messages : 8
Détails du profil
Informations professionnelles :
Activité : Ingénieur sécurité

Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
en sql dynamique c a d EXECUTE ....... ?
vous n'auriez pas un exemple SVP
merci
lioneleder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 11h48   #4
Invité de passage
 
Ingénieur sécurité
Inscription : mai 2011
Messages : 8
Détails du profil
Informations professionnelles :
Activité : Ingénieur sécurité

Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
un exemple avec un select,

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
CREATE OR REPLACE FUNCTION multivaluate_dependancy(
 
 left_attribut character varying,
 
right_attribut character varying,
 
tab character varying
 
)
 
returns BOOLEAN AS $$
 
 
 
DECLARE
 
 
 
i integer ;
 
i1 integer ;
 
bool BOOLEAN:=true ;
 
lio character varying;
 
 
 
BEGIN
 
	EXECUTE 'select ' || left_attribut || ' into lio from '||tab||' where' ||right_attribut|| = 'cameron';
 
		RETURN bool;
 
END;
 
$$LANGUAGE 'plpgsql' 
 
SECURITY DEFINER;
lioneleder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 18h28   #5
Invité de passage
 
Ingénieur sécurité
Inscription : mai 2011
Messages : 8
Détails du profil
Informations professionnelles :
Activité : Ingénieur sécurité

Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
exemple qui marche pas
lioneleder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 19h52   #6
Modérateur
 
Inscription : octobre 2008
Messages : 1 507
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 507
Points : 2 037
Points : 2 037
La doc présente un exemple:
Code :
1
2
3
4
5
6
 
EXECUTE 'SELECT count(*) FROM '
    || tabname::regclass
    || ' WHERE insere_par = $1 AND insere <= $2'
   INTO c
   USING utilisateur_verifie, date_verifiee;
Le problème de ta requête plus haut est que le INTO ne doit pas faire partie de la chaîne de requête, il doit être juste après.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 20h12   #7
Invité de passage
 
Ingénieur sécurité
Inscription : mai 2011
Messages : 8
Détails du profil
Informations professionnelles :
Activité : Ingénieur sécurité

Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
ça ne marche toujours pas, à quoi sert le || au juste ?
merci
lioneleder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 16h28   #8
Invité de passage
 
Ingénieur sécurité
Inscription : mai 2011
Messages : 8
Détails du profil
Informations professionnelles :
Activité : Ingénieur sécurité

Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
Merçi j'ai trouvé la solution
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
CREATE OR REPLACE FUNCTION multivaluate_dependancy(
 
left_attribut character varying,
 
right_attribut character varying,
 
val character varying,
 
tab character varying
 
)
 
returns BOOLEAN AS $$
 
 
 
DECLARE
 
 
 
i integer ;
 
i1 integer ;
 
bool BOOLEAN:=true ;
 
lio character varying;
 
 
 
BEGIN
 
	EXECUTE 'select ' || left_attribut || '  from '||tab||' where ' ||right_attribut||  '=' || quote_literal(val)
 
	INTO lio; 
 
	--EXCUTE 'select count('|| left_attribut ||') from film where acteur = "cameron"';
 
		RETURN bool;
 
END;
 
$$LANGUAGE 'plpgsql' 
 
SECURITY DEFINER;
lioneleder 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 17h11.


 
 
 
 
Partenaires

Hébergement Web