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 :

Exec Stored Procedure avec un DBlink.


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant Décisionnel
    Inscrit en
    Janvier 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 128
    Points : 84
    Points
    84
    Par défaut Exec Stored Procedure avec un DBlink.
    Bonjour,

    Je n'arrive pas à exécuter une procédure avec un DB Link,
    J'ai essayé plein d'écriture différentes.. Mais aucune ne marche.

    Pour l'instant j'en suis là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC BO_RCTA1_V2@LUC();
    Il me dit sql invalide.

    Une idée?

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 992
    Points : 2 498
    Points
    2 498
    Par défaut
    J'ai un peu de mal à voir où ça coince car tu donnes peu d'infos.

    Ta procédure se trouve sur la base de données distante et elle est accessible via un DBLink ou bien ta procédure est dans ta base locale et elle utilise, dans son code, un DBLink?

    De ce que je lis je pense que LUC est ton DBLink. Est-il valide? Exécute le code suivant pour voir si le DBLink est OK (attention : même si son statut dans DBA_OBJECT est VALID, ça ne veut pas dire qu'il ait été correctement créé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select 1 from dual@LUC;
    Si c'est OK, enlève les () car ta procédure n'a pas de paramètre; c'est peut-être lié à ça.

    Au fait, lors de la compilation de ta procédure sur la base distante, il n'y a pas eu de message d'erreur? Vérifie que ta procédure peut correctement s'exécuter sur la base distante en te connectant directement sur celle-ci si c'est possible.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant Décisionnel
    Inscrit en
    Janvier 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 128
    Points : 84
    Points
    84
    Par défaut
    Alors oui,
    mon DB link fonctionne correctement et il n'y a pas d'erreur sur le script,

    je viens d'essayer sans le () mais toujours pareil..

    Je suis passé avec un package finalement et ça marche..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    BEGIN
    PKG_Test.PS_RDV1@LUC();
    END;
    Mais je ne comprend pas pourquoi la procédure non..?

  4. #4
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 992
    Points : 2 498
    Points
    2 498
    Par défaut
    Si ça marche, c'est le principal

    Mais je note que le nom de la procédure n'est pas le même entre les deux messages, c'est normal?
    Message 1 : BO_RCTA1_V2
    Message 2 : PS_RDV1

    En outre dans le message 1 je vois un EXEC et dans le message 2 un BEGIN END --> au début tu voulais exécuter ta procédure directement sous SQL*Plus et dans le deuxième cas tu as appelé celle-ci via un bloc PL/SQL?

    J'ai l'impression qu'il y a entre le test 1 KO et le test 2 OK beaucoup de paramètres qui ont changé.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  5. #5
    Membre régulier
    Homme Profil pro
    Consultant Décisionnel
    Inscrit en
    Janvier 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 128
    Points : 84
    Points
    84
    Par défaut
    Ah mais EXEC n'est pas une commande PL/SQL d'Oracle?? ^^

    Sinon oui c'est normal, c'est la même procédure.

  6. #6
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 992
    Points : 2 498
    Points
    2 498
    Par défaut
    Oui, tu as raison, EXEC est pour le PL/SQL :-(
    J'en fais pas assez, surtout avec des appels de fonctions.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  7. #7
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 071
    Points
    8 071
    Par défaut
    Pour répondre à la marge, EXEC (ou EXECUTE en toutes lettres) n'appartient ni au SQL, ni au PL/SQL.
    C'est une commande propre à SQL*Plus, et éventuellement adoptée par d'autres outils compatibles.

    Sous le capot, "EXEC ma_commande_plsql" se transforme en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    begin
        ma_commande_plsql;
    end;
    On peut le constater en mode trace : sql_trace=true, événement 10046, dbms_monitor ou toute autre technique équivalente.

    C'est donc juste une facilité d'écriture acceptée par l'outil.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  8. #8
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Encore un détail: ce n'est pas EXEC mais CALL qui peut être employé pour l'appel d'une routine.

  9. #9
    Membre régulier
    Homme Profil pro
    Consultant Décisionnel
    Inscrit en
    Janvier 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 128
    Points : 84
    Points
    84
    Par défaut
    Merci pour ces explications!

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

Discussions similaires

  1. Erreur de troubleshooting sur stored procedure avec une transaction
    Par shimomura22 dans le forum Développement
    Réponses: 2
    Dernier message: 22/06/2016, 20h13
  2. [AC-2010] EXEC Stored procedure
    Par Haikel22 dans le forum VBA Access
    Réponses: 0
    Dernier message: 08/03/2016, 17h02
  3. [2012] Stored Procedure avec sp_executesql
    Par Aroeris dans le forum Développement
    Réponses: 5
    Dernier message: 24/02/2014, 11h20
  4. Réponses: 5
    Dernier message: 09/07/2012, 10h06
  5. Réponses: 5
    Dernier message: 11/07/2006, 16h54

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