Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
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 27/02/2007, 11h31   #1
Invité de passage
 
Inscription : juillet 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 15
Points : 0
Points : 0
Par défaut Comment remplacer le "where" avec une variable ?

Bonjour
J’utilise forms 6i et je veux paramétrer la close where dans un code PL/SQL
Par exemple : au lieu de faire
Code :
SELECT nom FROM perso WHERE matr=10
je remplace la close where par une variable
et j’obtiens
Code :
SELECT nom FROM perso WHERE x
, mais si j’écrie la close where sur cette forme le PL/SQL ne l’accepte pas
Merci de m’aider a résoudre se problème
ghani25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 11h49   #2
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
Regarde du côté de :
Code :
set_block_property ('monBloc', default_where, x);
__________________
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 27/02/2007, 12h00   #3
Invité de passage
 
Inscription : juillet 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 15
Points : 0
Points : 0
Merci pour votre repense
J’ai déjà essayé cette solution mais sa ne résoudre pas le problème, se que je cherche exactement d’écrire un code pl/sql qui est relier a plusieurs table par une jointure
Code :
SELECT * FROM tab1,tab2,tab3 WHERE cond1
, ou cond1 c’est une condition sur deux table ( tab1.champ<tab2.champ) par exemple se que je cherche ces de mettre cette condition dans une variable x et de faire
Code :
x := tab1.champ<tab2.champ
et mettre le x dans la close where ( au lieu de faire
Code :
WHERE tab1.champ<tab2.champ
ghani25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 12h24   #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
Je ne vois pas pourquoi cela ne résoud pas votre problème, puisque cela revient exactement à faire ce que vous souhaitez :
Code :
set_block_property (monBlock, default_where, 'tab1.champ<tab2.champ');
Forms traite cela comme :
Code :
1
2
default_where := 'tab1.champ<tab2.champ';
WHERE &default_where
Ok, la variable ne s'appelle pas x, mais c'est le mieux que j'ai à vous proposer.

Plutôt que d'utiliser de la couleur, utilisez les balises code, ce sera plus lisible
__________________
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 27/02/2007, 13h35   #5
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
On va reprendre depuis le début, c'est dans une procédure ?
Citation:
je veux paramétrer la close where dans un code PL/SQL
Quel est le code déjà existant, ça nous aidera.

Si c'est un curseur tu peux utiliser ce genre
Code :
1
2
3
4
 
OPEN v_cur FOR 'SELECT * from ' ||  x
LOOP
END LOOP;
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 13h52   #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 McM
Si c'est un curseur tu peux utiliser ce genre
Code :
1
2
3
4
 
OPEN v_cur FOR 'SELECT * from ' ||  x
LOOP
END LOOP;
Je ne suis pas sûr que forms 6i accepte cette syntaxe.
__________________
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 27/02/2007, 21h35   #7
Invité de passage
 
Inscription : juillet 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 15
Points : 0
Points : 0
Merci beaucoup a vous tous pour ces repenses
Désolé mcm, plaineR a raison forms 6 n’accepte pas cette syntaxe ni la syntaxe de EXECUTE IMMEDIATE, j’ai déjà essayer . je vais me débrouiller avec la procédure set_block_property peux être que mon problème va être résolu,
En faite je cherche a passé toute la condition de la close where (tab1.champ<tab2.champ) comme paramètre c pour se la je veux mettre cette condition dans une variable ou la saisir dans un item texte pour obtenir par exemple (select * from tab1, tab2 where :monblock.text_item) et je pence que la procédure set_block_property va pas me servir tros par se que elle est basé sur le block de donnée ou elle sera appliqué et si je veux utilisé la close where sur une ou plusieurs tables indépendament du bloc de donnée ???!!!
Je vous envoie de mes nouvelles
Merci une autre fois
ghani25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 00h47   #8
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 37
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 37
Points : 28
Points : 28
bonjour,
je ne sais pas si je ce lien peut t'être utile:

http://sheikyerbouti.developpez.com/execute_immediate/

dis moi si tu as pu resoudre ton problème.

Bon courage
LDRISS69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 09h23   #9
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 ghani25
si je veux utilisé la close where sur une ou plusieurs tables indépendament du bloc de donnée ???
C'est ce que tu aurais du préciser dès le début. Dans ce cas regarde du côté du package exec_sql (built in forms) ou dbms_sql (package basé standard oracle)

@LDRISS69 : execute immediate ne fonctionne pas sous forms 6i
__________________
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 28/02/2007, 09h46   #10
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 plaineR
C'est ce que tu aurais du préciser dès le début. Dans ce cas regarde du côté du package exec_sql (built in forms) ou dbms_sql (package basé standard oracle)

@LDRISS69 : execute immediate ne fonctionne pas sous forms 6i
Ni sous Forms 9i ni sous Forms 10g.

Je comprend toujours pas la demande, c'est l'affichage d'un bloc Basé dont on parle où juste un Select dans une procédure ?
__________________
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é
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h26.


 
 
 
 
Partenaires

Hébergement Web