Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
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 20/02/2007, 15h34   #1
Futur Membre du Club
 
Inscription : août 2005
Messages : 74
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 74
Points : 15
Points : 15
Par défaut [PLSQL 9i] Paramètre par défaut d'une fonction

Bonjour,

Mon problème: utiliser un nom de table par défaut pour une requête dans une fonction PLSQL.

Je voudrais faire quelque chose du genre

Code :
1
2
3
4
5
6
7
8
MAFONCTION( param1 int, param2 varchar2 default 'MATABLE')
return varchar2 
is
okStatus varchar2(150);
begin
select monchamp into okStatus from param2 where...;
return okStatus;
end;
Quelqu'un aurait il la syntaxe exacte à utiliser ? (en supposant que ce que je veux faire est possible )

Merci par avance !

lblgl
lbgl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 15h35   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
tutoriel SQL DYNAMIQUE
http://sheikyerbouti.developpez.com/execute_immediate/
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 15h51   #3
Futur Membre du Club
 
Inscription : août 2005
Messages : 74
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 74
Points : 15
Points : 15
Merci de la réponse !

Cela vous paraît il correct ?

Code :
1
2
3
4
5
6
7
8
9
10
MAFONCTION( param1 int, param2 varchar2 default 'MATABLE')
return varchar2 
is
okStatus varchar2(150);
requete   VARCHAR2(256) ;
begin
requete:= ‘SELECT monchamp FROM :1 WHERE...’;
EXECUTE IMMEDIATE requete INTO okStatus USING param2 ;
return okStatus;
end;
Merci par avance,
lblg
lbgl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 15h56   #4
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Non, c'est explique dans le tuto qu'il n'est pas possible de faire cela
Il faut faire quelque chose comme ça :
Code :
1
2
requete:=SELECT monchamp FROM ' || param2 || ' WHERE...’;
EXECUTE IMMEDIATE requete INTO okStatus;
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 15h57   #5
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
oui mais tu récupères pas le résultat ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 16h01   #6
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Citation:
Envoyé par Fred_D
oui mais tu récupères pas le résultat ?
Dans okStatus ou ce sont mes yeux ?
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 16h04   #7
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
faut juste que la requête ne retourne pas plus d'une ligne
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 16h04   #8
Futur Membre du Club
 
Inscription : août 2005
Messages : 74
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 74
Points : 15
Points : 15
merci de ces réponses (désolé de ma lecture trop hative du tutoriel )

merci de votre aide bien précieuse.
ps: effectivement okStatus devrait recevoir le résulat de la requête

lblgl
lbgl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 16h36   #9
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
Citation:
Envoyé par Fred_D
faut juste que la requête ne retourne pas plus d'une ligne
Ben, dans le code de départ c'est un select into donc 1 seule ligne
__________________
More Code : More Bugs. Less Code : Less Bugs
McM 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 04h35.


 
 
 
 
Partenaires

Hébergement Web