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

Oracle Discussion :

[sql] comment utiliser une variable global


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut [sql] comment utiliser une variable global
    salut a tous
    ma question et comment utiliser les variables globaux dans un programme
    mon problem et
    j'ai un formulaire client qui contient un champ num_clt
    et un autre formulaire paiement qui souvre apartire du formulaire client par linstruction open_forms et ce formulaire contient le meme champ num_clt
    ce que je souhaite faire affecter la valaire du champ num_clt de formulaire client dans champ num_clt dans le formulaire paiement
    [FONT='Times New Roman']merci d'avence pour votre aide[/FONT]

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    en créant un package avec les variables dans la partie spécification. Il suffit alors de créer une fonction qui retourne le résultat de ces variables.

    J'avais donné cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE PACKAGE Context_Package AS
      PROCEDURE set_value(v_value_p IN VARCHAR2);
     
      FUNCTION get_value RETURN VARCHAR2;
     
      g_mavariable_globale VARCHAR2(30);
     
    END;
    /
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CREATE OR REPLACE PACKAGE BODY Context_Package AS
     
      PROCEDURE set_value(v_value_p IN VARCHAR2) AS
      BEGIN
     
       g_mavariable_globale := v_value_p;
     
      END;
     
      FUNCTION get_value RETURN VARCHAR2 AS
      BEGIN
     
       RETURN g_mavariable_globale;
     
      END;
     
    END;

  3. #3
    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 comprends pas pourquoi tu crées une fonction pour récupérer la valeur (sauf si tu en as besoin dans une requête sql) et une procédure pour affecter la valeur. Pourquoi ne pas l'affecter directement ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SQL> create package pack_dvp as
      2  var_globale number :=2;
      3  end;
      4  /
    Package created.
    SQL> begin
      2  dbms_output.put_line (pack_dvp.var_globale);
      3  pack_dvp.var_globale := 3;
      4  dbms_output.put_line (pack_dvp.var_globale);
      5  end;
      6  /
    2
    3
    PL/SQL procedure successfully completed.
    Est-il déconseillé de faire cela ?
    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.

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Il me semble que j'avais eu des soucis avec hibernate (J2EE) sans la fonction

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par plaineR
    Je ne comprends pas pourquoi tu crées une fonction pour récupérer la valeur (sauf si tu en as besoin dans une requête sql) et une procédure pour affecter la valeur. Pourquoi ne pas l'affecter directement ?
    Est-il déconseillé de faire cela ?
    Salut plaineR,

    Ta question se rapproche beaucoup des contraintes de la POO et des variables privées pour lesquelles on écrit des accesseurs (setValue et getValue) afin de modifier leurs valeurs par des classes externes.

    Mais peut être que je suis complètement à côté de la plaque...
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  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 Fred_D
    Il me semble que j'avais eu des soucis avec hibernate (J2EE) sans la fonction
    Ok, merci pour l'info
    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
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 837
    Points : 975
    Points
    975
    Par défaut
    affecter la valaire du champ num_clt de formulaire client dans champ num_clt dans le formulaire paiement
    Si j'ai bien compris, il s'agit de formulaires Forms. Dans ce cas pourquoi ne pas passer la valeur de l'item num_clt en paramètre à l'appel de la form paiement et le récupérer ainsi dans ton item de destination au moyen du trigger When-New-Form-Instance ?
    Pas besoin de variable globale !
    Je ne comprends pas pourquoi tu crées une fonction pour récupérer la valeur
    Ce qu'il faut savoir avec Forms, c'est qu'il ne peu pas accèder à une variable de package en base directement. On est obligé de passer par un appel de procédure ou de fonction qui retourne la valeur à la form appellante.
    Si ça peut servir !
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par star
    Si j'ai bien compris, il s'agit de formulaires Forms. Dans ce cas pourquoi ne pas passer la valeur de l'item num_clt en paramètre à l'appel de la form paiement et le récupérer ainsi dans ton item de destination au moyen du trigger When-New-Form-Instance ?
    Pas besoin de variable globale !
    En effet, il suffit de récupérer la valeur avec :NOM_BLOCK.NOM_ITEM

  9. #9
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    En effet, il suffit de récupérer la valeur avec :NOM_BLOCK.NOM_ITEM



    on ne peut effectuer cette opération que si on est sur le meme formulaire
    d'un block a un autre
    mais mon problem est de récupérer la valeur d'un formulaire a un autre

  10. #10
    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 star
    Dans ce cas pourquoi ne pas passer la valeur de l'item num_clt en paramètre à l'appel de la form paiement et le récupérer ainsi dans ton item de destination au moyen du trigger When-New-Form-Instance ?
    Regarde du côté des paramètres et des liste de paramètres.
    Pour plus d'infos :
    http://sheikyerbouti.developpez.com/...g/?page=Chap12
    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.

  11. #11
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    star a écrit :
    Dans ce cas pourquoi ne pas passer la valeur de l'item num_clt en paramètre à l'appel de la form paiement et le récupérer ainsi dans ton item de destination au moyen du trigger When-New-Form-Instance ?
    Regarde du côté des paramètres et des liste de paramètres.

    j'ai essaié de le faire mais j'ai pas pu
    en fait mon problem est
    passer la valeur de l'item num_clt en paramètre à l'appel de la form paiement
    comment faire cette étape

  12. #12
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    essaye la méthode que j'ai donné déjà, avec :BLOC.ITEM

  13. #13
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    star a écrit :
    Dans ce cas pourquoi ne pas passer la valeur de l'item num_clt en paramètre à l'appel de la form paiement et le récupérer ainsi dans ton item de destination au moyen du trigger When-New-Form-Instance ?
    Regarde du côté des paramètres et des liste de paramètres
    j'ai essaié de le faire mais j'ai pas pu
    en fait mon problem est : passer la valeur de l'item num_clt en paramètre à l'appel de la form paiement
    comment je fais pour réaliser cette étape

  14. #14
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    [FONT='Times New Roman']je m'excuse d'envoyer 2 fois la même réponse j'ai un problème de connexion[/FONT]
    [FONT='Times New Roman'][/FONT]
    essaye la méthode que j'ai donné déjà, avec :BLOC.ITEM

    [FONT=Times New Roman]cette méthode ne marche pas sur 2 formulaire différents [/FONT]
    [FONT='Times New Roman']mais sur le même formulaire entre différents blocks[/FONT]

  15. #15
    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
    Fais un peu d'efforts, tout est expliqué clairement dans le chapitre du guide de SheikYerbouti que je t'ai indiqué.
    Et si tu n'y arrives pas malgré tout mets le code que tu as écrit pour que l'on te dise ce qui ne va pas.
    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.

  16. #16
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    [FONT=Times New Roman]Avant tout je remercie fred D et plaineR de m’avoir aider[/FONT]
    [FONT=Times New Roman]Concernant l’utilisation des paramètres c bon[/FONT]
    [FONT=Times New Roman]Mais j’ai un autre problème c’est que si j’exécute le programme qui fais passer une valeur dans une paramètre plus qu’une fois une erreur s’affiche[/FONT]
    [FONT='Times New Roman']Frm-47001 cannot create parameter list param_list : list with name exists[/FONT]

  17. #17
    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
    Si elle existe tu peux toujours faire un destroy_parameter_list :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    pl_id := Get_Parameter_List('ma_liste_de_parametres'); 
    IF NOT Id_Null(pl_id) THEN 
       Destroy_Parameter_List(pl_id); 
    ELSE
    -- là tu mets ton code 
    ...
    END IF;
    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.

  18. #18
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    merci c ok
    j'ai une autre question
    lorsque j’affecte la valeur de la paramètre
    si j’exécute les instructions suivantes
    do_key(‘enter_query’) ;
    mon_champ:=:parameter.ma_parameter;
    do_key(‘execute_query’) ;
    dans un même block pl/sql
    une alerte oracle s’affiche voulez vous enregistrer les modifications

    mais si chaque instruction dans un block séparé pas de problème
    comment faire pour exécuter les 3 instruction dans le même block

  19. #19
    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
    Mets dans le trigger PRE-QUERY :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mon_champ:=:parameter.ma_parameter;
    et gère uniquement l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    do_key(‘execute_query’) ;
    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.

  20. #20
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    dans ma liste des triggers j'ai pas le trigger PRE-QUERY

Discussions similaires

  1. [AC-2003] Comment utiliser une variable issue d'un recordset dans une requète SQL
    Par alainwilly dans le forum Access
    Réponses: 1
    Dernier message: 23/03/2012, 20h12
  2. Réponses: 1
    Dernier message: 26/02/2009, 07h11
  3. Comment utiliser une variable globale de dll ?
    Par Chamatho dans le forum Langage
    Réponses: 14
    Dernier message: 29/11/2008, 20h22
  4. [SQL] Comment utiliser une variable
    Par dommm063 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 06/04/2008, 13h11

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