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

SQL Oracle Discussion :

execute immediate oracle8i


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut execute immediate oracle8i
    Execute immediate.

    --------------------------------------------------------------------------------

    Je suis sous ORACLE8i. J'appelle une procedure stockée sur une autre base de la manière suivante:

    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
    18
    19
    20
    21
    22
    23
    s_req:='begin pa.ppax_cre_affectation_ap@GA(:sdsc_param_i,
    :SDate_Bandeau_1,
    :scod_coll_i,
    :snum_exbudg_i,
    :scod_budg_i,
    :sidoperat_i,
    :sidphase_i,
    :SMnt_TTc_i,
    :Smnt2_i,
    :SMnt3_i,
    :SMnt4_i,
    :SMnt5_i,
    :SMnt6_i,
    :SMnt7_i,
    :SMnt8_i,
    :SMnt9_i, 
    :SMnt10_i,
    :SNum_Aff_io,
    :SCod_Etat_io); 
    end;';
     
     
    EXECUTE IMMEDIATE s_req using out SNum_Aff_io,SCod_Etat_io;
    Là j'ai un message d'erreur comme quoi les variables ne sont pas liées alors qu'elles sont toutes renseignées. Pouvez-vous m'aider ?

  2. #2
    Membre chevronné Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Par défaut
    Meme reponse/question que dans ton autre message :
    --
    C'est quoi out ? Tu devrais renseigner chaque variable dans la clause USING.

    Nicolas.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    Excuse-moi, je ne connais pas bien oracle peux-tu me préciser ce que tu veux dire ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    As-tu lu http://sheikyerbouti.developpez.com/execute_immediate/ ?
    Es-tu vraiment obligé de passer par du sql Dynamique ?

  5. #5
    Membre chevronné Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Par défaut
    J'essairais quelque chose comme cela plutot :
    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
    18
    EXECUTE IMMEDIATE s_req using sdsc_param_i,
    SDate_Bandeau_1,
    scod_coll_i,
    snum_exbudg_i,
    scod_budg_i,
    sidoperat_i,
    sidphase_i,
    SMnt_TTc_i,
    Smnt2_i,
    SMnt3_i,
    SMnt4_i,
    SMnt5_i,
    SMnt6_i,
    SMnt7_i,
    SMnt8_i,
    SMnt9_i, 
    SMnt10_i,
    SNum_Aff_io,SCod_Etat_io;
    Et pourquoi utiliser un appel sous sa forme dynamique ?

    Un example d'appel dynamique :
    http://forums.oracle.com/forums/mess...sageID=2063272

    Nicolas.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    En fait, j'ai crée une procedure stockée sur une base qui en appelle deux autres sur une autre base. Quand j'exécute ma première procedure stockée j'ai le message suivant :

    ORA-20000: ORA-02064: opération distribuée non supportée (PPaX_Cre_Affectation_AP)

    J'essaie de trouver une solution ?

  7. #7
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    ORA-02064: distributed operation not supported
    Cause: One of the following unsupported operations was attempted:
    1. array execute of a remote update with a subquery that references a dblink, or

    2. an update of a long column with bind variable and an update of a second column with a subquery that both references a dblink and a bind variable, or

    3. a commit is issued in a coordinated session from an RPC procedure call with OUT parameters or function call
    Ca doit être le point 3 : Un commit fait par la procédure distante.
    Il me semble qu'il faut que le commit soit fait par celui qui appelle. (Une appli externe appelait un de nos packages qui faisait un COMMIT, ils nous l'avait fait enlever)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    Effectivement, il y a des commit et c'est ce qui pose problème dans les procédures appelées. Par contre je ne peux pas les enlever car les procédures ne nous appartiennent pas. Est-ce qu'il y aurait un moyen de contourner ce problème ?

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    un EXECUTE IMMEDIATE est complétement inutile dans ce cas

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    J'ai enlever le execute immediate

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    sinon, pour répondre à la question, non, il n'y a aucun moyen. Pour comprendre le problème : tu ouvres une session sur ta base qui ouvre un session distance via le DB Link, cette session fait un commit... où appliquer le commit ? Comment fermer la transaction en maintenant la connexion ?

    Bref... c'est impossible et ça sent même le gros défaut dans l'architecture

    La solution passera peut-être par la réplication

Discussions similaires

  1. [PLSQL] Erreur 00922 sur Execute immediate
    Par Henrisbg dans le forum Oracle
    Réponses: 5
    Dernier message: 17/11/2005, 16h06
  2. [PL/SQL] Execute immediate
    Par BiM dans le forum Langage SQL
    Réponses: 7
    Dernier message: 10/08/2005, 11h13
  3. Equivalents de EXECUTE IMMEDIATE ... RETURNING INTO ... ?
    Par swirtel dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/05/2005, 10h21
  4. [pl/sql] execute immediate
    Par Nadine dans le forum Oracle
    Réponses: 16
    Dernier message: 23/02/2005, 17h37
  5. Execute immediate et nom reserves
    Par nuke_y dans le forum Oracle
    Réponses: 3
    Dernier message: 22/11/2004, 18h17

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