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

Langage SQL Discussion :

[PL/SQL] Execute immediate


Sujet :

Langage SQL

  1. #1
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut [PL/SQL] Execute immediate
    Bonjour,

    Je crée une procédure en Oracle qui contient un Execute Immediate pour le moins... classique. Or j'obtiens cette erreur à l'éxécution de la procédure :

    SQL> exec PurgerBase
    BEGIN PurgerBase; END;

    *
    ERREUR à la ligne 1 :
    ORA-00936: Expression absente
    ORA-06512: à "SYSTEM.PURGERBASE", ligne 17
    ORA-06512: à ligne 1
    Et voici ma procédure :

    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
    SQL> Create or replace procedure PurgerBase
      2  AS
      3   lesSimulations varchar(50);
      4   lesDomaines varchar(50);
      5   lePrefixe varchar(20);
      6   laRequete varchar(256);
      7  BEGIN
      8   lesSimulations:='select SimKey from Simulation where SimDeleted=0';
      9   lesDomaines:='select DomRowId from HSYS_Domaines';
     10   for ligne in (select * from tsversion)
     11   loop
     12    lePrefixe:=ligne.TsvPrefixeChamp;
     13    laRequete:='update '||ligne.TsvNomTable||' set '||lePrefixe||'Deleted=1 ';
     14    laRequete:=laRequete||'where ('||lePrefixe||'Simulation>0 and ';
     15    laRequete:=laRequete||lePrefixe||'Simulation not in '||lesSimulations||') or ';
     16    laRequete:=laRequete||lePrefixe||'Domaine not in '||lesDomaines;
     17    execute immediate laRequete;
     18   end loop;
     19  END;
     20  /
    Que manque t'il a mon EXECUTE IMMEDIATE ?
    Quel est l'équivalent Interbase Firebird et Sql Server ?

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Ta question serait plus rapidement résolue dans le forum ORACLE
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut Re: [PL/SQL] Execute immediate
    Citation Envoyé par BiMouXeTTe
    Quel est l'équivalent Interbase Firebird et Sql Server ?

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je disais cela pour toi...
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Que dirais-tu de tracer ta variable laRequete, via une instruction style dbms_output.put_line, après avoir activer le mode trace ? Au vu du message d'erreur, je pense que c'est une erreur de syntaxe dans la dite requête.

    Ex (Edit) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> select from maTable;
    select from maTable
           *
    ERREUR à la ligne 1 :
    ORA-00936: Expression absente

    Concernant la question subsidiaire, je ne connais qu'Oracle ...
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  6. #6
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Ah heu oui merci, ben pour le reste je cherche, je cherche....

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour
    Ne serait-ce pas une question de droits?
    en effet il cherche SYSTEM.PURGERBASE.
    Si tu as créé ta procédure en tant que user dbaMachin.
    Tu peux essayer exec dbaMachin.PurgerBase ou simplement
    dbaMachin.PurgerBase


    A+
    Soazig

  8. #8
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Nonon merci c'est bon, c'était juste un problème de parenthèses manquantes

    Par contre je vais donner la réponse pour ma question subsidiaire à propos du execute immediate :
    SQLServer : EXEC (@laRequete)
    Interbase : EXECUTE STATEMENT marcherait sur Firebird 1.5 mais je veux que ca marche aussi sur Interbase donc pour l'instant... Je cherche toujours !

    Si jamais vous avez une idée, je suis preneuse

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

Discussions similaires

  1. [Oracle 9iR2][PL/SQL] EXECUTE IMMEDIATE USING
    Par mainecoon dans le forum Oracle
    Réponses: 4
    Dernier message: 08/02/2007, 19h08
  2. [8i][PL/SQL] EXECUTE IMMEDIATE
    Par Bahan dans le forum SQL
    Réponses: 25
    Dernier message: 15/09/2006, 14h05
  3. SQl loader et execute immediate
    Par salim_kwada dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 31/08/2006, 13h30
  4. [PL/SQL] EXECUTE IMMEDIATE et INSERT et RETURNING
    Par swirtel dans le forum Oracle
    Réponses: 2
    Dernier message: 18/04/2006, 09h25
  5. [pl/sql] execute immediate
    Par Nadine dans le forum Oracle
    Réponses: 16
    Dernier message: 23/02/2005, 17h37

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