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

PL/SQL Oracle Discussion :

Executer PL avec paramètre


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 48
    Points
    48
    Par défaut Executer PL avec paramètre
    Bonjour,
    J'ai une procédure PL "extracation" sous oracle.
    Elle contient deux paramètres vc_db1 := 'MAGASIN_PARIS' ET
    vc_db2 := 'CENTRE_PARIS'
    Je souhaite l’exécuter en lui passant les paramètres dans l’exécution
    Merci


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
      EXEC extracation  @...

  2. #2
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    Deux variantes :

    Appel avec position des paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EXEC extraction('MAGASIN_PARIS', 'CENTRE_PARIS');
    Appel avec nom des paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EXEC extraction(vc_db2 => 'CENTRE_PARIS', vc_db1 => 'MAGASIN_PARIS');

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Bibeleuh Voir le message
    Deux variantes :

    Appel avec position des paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EXEC extraction('MAGASIN_PARIS', 'CENTRE_PARIS');
    Appel avec nom des paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EXEC extraction(vc_db2 => 'CENTRE_PARIS', vc_db1 => 'MAGASIN_PARIS');
    Merci
    En fait, ca ne marche pas !
    dans ma procédure j'ai deux variable paramètres :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    vc_db2 := 'CENTRE_PARIS';
    vc_db1 := 'MAGASIN_PARIS';

    pour exécuter la proc sans mettre les valeurs en paramètre en dur dans PL :
    Je dois enlever les paramètres en dur dans PL ? sous quel format ?

    avant de faire :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EXEC extraction(vc_db2 => 'CENTRE_PARIS', vc_db1 => 'MAGASIN_PARIS')



    Merci de votre aide

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Votre question n'est pas vraiment clair; votre histoire de paramètre en dur est nébuleuse.

    A quel moment voulez vous renseigner les valeurs de ces paramètres ?

    Poster le code de la procédure, merci.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Votre question n'est pas vraiment clair; votre histoire de paramètre en dur est nébuleuse.

    A quel moment voulez vous renseigner les valeurs de ces paramètres ?

    Poster le code de la procédure, merci.
    Code sql : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
    create or replace
    PROCEDURE EXTRACTION
    IS 
    LN$Cpt PLS_INTEGER ;
    vc_db1 varchar2(100);
    vc_db2 varchar2(100);
     
    BEGIN 
     
     
    vc_db1 := 'PARIS';
    vc_db2 := 'BORDEAUX';
     
     
    EXECUTE IMMEDIATE '
     
    INSERT INTO table1
    ( ...)
    ( Select 
    ...
    FROM vuemag@'||vc_db1||')' ; 
     
     
    EXECUTE IMMEDIATE '
     
    INSERT INTO table2
    ( ...)
    ( Select 
    ...
    FROM vuemag@'||vc_db2||')' ; 
     
     
     
    END,

    voici mon code
    Le but est de na pas mettre les deux variables dans PL (vc_db1/ vc_db2)
    Je souhaiterai passer les valeurs lors de l'execution

    Merci beaucoup

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par decisio Voir le message
    Le but est de na pas mettre les deux variables dans PL (vc_db1/ vc_db2)
    Je souhaiterai passer les valeurs lors de l'execution

    Merci beaucoup
    Il suffit donc de virer les deux variables et les mettre en paramètre, comme dit plus haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE
    PROCEDURE EXTRACTION
     
    (
    vc_db1 varchar2,
    vc_db2 varchar2
    )
    IS 
    ....
    Accessoirement, il y a une bonne raison ici pour utiliser du SQL dynamique dans la procédure ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Il suffit donc de virer les deux variables et les mettre en paramètre, comme dit plus haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE
    PROCEDURE EXTRACTION
     
    (
    vc_db1 varchar2,
    vc_db2 varchar2
    )
    IS 
    ....
    Accessoirement, il y a une bonne raison ici pour utiliser du SQL dynamique dans la procédure ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE
    PROCEDURE EXTRACTION
     
    (
    vc_db1 varchar2,
    vc_db2 varchar2
    )
    IS 
    ....

    Accessoirement, il y a une bonne raison ici pour utiliser du SQL dynamique dans la procédure


    c'est ce que j'ai fait mais j'ai une erreur !



    Code sql : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    CREATE OR REPLACE
    PROCEDURE EXTRACTION
    IS 
    LN$Cpt PLS_INTEGER ;
    vc_db1 varchar2(100);
    vc_db2 varchar2(100);
     
    BEGIN 
     
     
     
    EXECUTE IMMEDIATE '
     
    INSERT INTO table1
    ( ...)
    ( Select 
    ...
    FROM vuemag@'||vc_db1||')' ; 
     
     
    EXECUTE IMMEDIATE '
     
    INSERT INTO table2
    ( ...)
    ( Select 
    ...
    FROM vuemag@'||vc_db2||')' ; 
     
     
     
    END,


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EXEC extraction(vc_db2 => 'BORDEAUX', vc_db1 => 'PARIS');

    J'ai l'erreur
    RA-06550: line 1, column 7:
    PLS-00306: wrong number or types of arguments in call to EXTRACTION
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Comme on a pas la moindre idée de ce qu'est ALIM2 ....

    Par ailleurs, je ne vois pas le rapoprt entre la modif de code que j'ai suggéré et celui que tu postes; encore une fois, réponse nébuleuse.

    De plus, tu n'as pas répondu à la question concernant l'usage du SQL dynamique ici.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Comme on a pas la moindre idée de ce qu'est ALIM2 ....

    Par ailleurs, je ne vois pas le rapoprt entre la modif de code que j'ai suggéré et celui que tu postes; encore une fois, réponse nébuleuse.

    De plus, tu n'as pas répondu à la question concernant l'usage du SQL dynamique ici.
    pour le SQL dynamique
    J'ai posté ici une partie de la ps
    En effet, j 'ai une proc stockée qui interroge des vues dans d'autres shémas à travers des db link.
    Il y a un paramètre dans le script qui remplace la valeur en dur que j'ai positionné dans mes requêtes sql au départ.

    Merci de m'avoir aidé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. execution script avec paramètres
    Par exe2bin dans le forum Général Python
    Réponses: 15
    Dernier message: 25/04/2010, 13h57
  2. Executer une application avec paramètres
    Par GUNNM45 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/09/2008, 09h54
  3. Réponses: 8
    Dernier message: 19/12/2006, 23h55
  4. Réponses: 1
    Dernier message: 03/12/2006, 16h13
  5. Instruction EXECUTE avec paramètres
    Par @n@kin.be dans le forum PostgreSQL
    Réponses: 17
    Dernier message: 19/06/2006, 11h07

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