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 :

[Oracle 10.2] Erreur -14552 opération DDL, COMMIT ou ROLLBACK interdite dans DML


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut [Oracle 10.2] Erreur -14552 opération DDL, COMMIT ou ROLLBACK interdite dans DML
    Bonjour,
    J'ai une erreur dasn un fonction stockée :

    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
    CREATE OR REPLACE
    FUNCTION DEBUG (
        debut IN DATE,
        fin IN DATE,
     
    ) RETURN PLS_INTEGER
     
    BEGIN
     
            FOR c IN (
                SELECT owner, table_name, constraint_name
                FROM all_constraints
                WHERE constraint_type = 'R'
                AND lower(table_name) IN ('a', 'b', 'c')
            ) LOOP
     
                EXECUTE IMMEDIATE 'ALTER TABLE ' || contrainte.owner || '.' || contrainte.table_name || ' DISABLE CONSTRAINT ' || contrainte.constraint_name ;
     
            END LOOP;
    END DEBUG
    J'ai l'erreur ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur -14552 : ORA-14552: opération DDL, COMMIT ou ROLLBACK interdite dans une instruction DML ou une interrogation
    Si je met en commentaire la ligne EXECUTE IMMEDIATE, je n'ai pas de problème.Merci pour votre aide.

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Si vous appelez cette fonction dans une requête SQL, c'est la cause de l'erreur: on ne peut pas exécuter n'importe quelle instruction SQL dans une fonction déjà appelée par une autre instruction SQL.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par pifor
    Si vous appelez cette fonction dans une requête SQL, c'est la cause de l'erreur: on ne peut pas exécuter n'importe quelle instruction SQL dans une fonction déjà appelée par une autre instruction SQL.
    J'appelle cette fonction d'une requete SQL.
    Comment l'appeller pour avoir les droits nécessaires (j'utilise oracle SQL Develloper) ?

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Ce n'est pas une question de droits: c'est une limitation des fonctionnalités d'une fonction PL/SQL qui est utilisée dans une requête SQL.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par pifor
    Ce n'est pas une question de droits: c'est une limitation des fonctionnalités d'une function PL/SQL qui est utilisée dans une requête SQL.
    Alors, comment faire pour lancer cette fonction stockée sans déclencher cette erreur ?

  6. #6
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Il suffit de l'appeler en dehors d'une requête SQL: soit dans du PL/SQL , soit depuis la ligne de commande SQL*Plus:

    Il est aussi possible de l'appeler depuis par une API comme JDBC, ODBC ou Pro*C. Exemple en Java:
    http://download-uk.oracle.com/docs/c...c.htm#i1014127

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    En lancant la fonction en mode debugage, je n'ai aps les privilèges :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    This session requires DEBUG CONNECT SESSION and DEBUG ANY PROCEDURE user privileges.
    Comment les ajouter après s'être connecter en administrateur ?

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 43
    Points
    43
    Par défaut
    En plus ta fonction ne retourne aucune valeur

  9. #9
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    GRANT DEBUG CONNECT SESSION TO <user>;
    GRANT DEBUG ANY PROCEDURE TO <user>;
    où <user> est l'utilisateur qui lance le mode déboguage.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 08/05/2014, 18h10
  2. Erreur 3251: Opération non autorisé pr ce type d'objet
    Par Ragnarok85 dans le forum Access
    Réponses: 10
    Dernier message: 14/02/2007, 09h52
  3. [Oracle 9.i] Erreur ORA -30019
    Par krowin dans le forum Oracle
    Réponses: 1
    Dernier message: 10/05/2006, 10h58
  4. [VB6-MSADO 2.5 - Oracle 9.2] Erreur Execution 80004005
    Par GyLes dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/02/2006, 18h10
  5. [Oracle 8 Client] erreur d'installation sur XP
    Par gaucher dans le forum Oracle
    Réponses: 1
    Dernier message: 07/02/2006, 18h08

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