IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Forms Oracle Discussion :

Comment remplacer le "where" avec une variable ?


Sujet :

Forms Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Points : 7
    Points
    7
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom from perso where matr=10
    je remplace la close where par une variable
    et j’obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Regarde du côté de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    x := tab1.champ<tab2.champ
    et mettre le x dans la close where ( au lieu de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where tab1.champ<tab2.champ

  4. #4
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Je ne vois pas pourquoi cela ne résoud pas votre problème, puisque cela revient exactement à faire ce que vous souhaitez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set_block_property (monBlock, default_where, 'tab1.champ<tab2.champ');
    Forms traite cela comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    On va reprendre depuis le début, c'est dans une procédure ?
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    OPEN v_cur FOR 'SELECT * from ' ||  x
    LOOP
    END LOOP;
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  6. #6
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par McM
    Si c'est un curseur tu peux utiliser ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    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

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    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

  9. #9
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    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.

  10. #10
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    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
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/06/2010, 15h53
  2. Comment créer un site immobilier dynamique avec une base de données ?
    Par Alain troverti dans le forum Général Conception Web
    Réponses: 14
    Dernier message: 07/07/2006, 21h57
  3. Réponses: 2
    Dernier message: 27/04/2006, 09h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo