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 :

Problème de creation d'une table en PL/SQL


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Par défaut Problème de creation d'une table en PL/SQL
    Bonjour à tous,

    Je m'adresse à vous car cela fait quelques heures que je me prends la tête sur un problème qui parrait pourtant très simple.

    Je travaille sous Toad et j'aimerais créer une procédure me permettant de créer une table si elle n'exite pas dans la base de donnée, et d'effacer les enregistrements dans le cas contraire.

    Voici mon code:

    BEGIN
    -- Si la table n'existe pas, il va soulever une erreur
    EXECUTE IMMEDIATE 'DROP TABLE TEMP_IMGSTK';
    EXECUTE IMMEDIATE 'CREATE TABLE TEMP_IMGSTK AS SELECT * FROM V_IMG';

    RETURN 0;

    EXCEPTION
    WHEN OTHERS THEN
    EXECUTE IMMEDIATE 'CREATE TABLE TEMP_IMGSTK AS SELECT * FROM V_IMG';
    RETURN 1;
    END;

    Quand je lance mon package:

    SELECT EXTPCK_MAJSTK.table_imgstk FROM DUAL;

    Je reçois ce message d'erreur :

    ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
    Cause: DDL operations like creation tables, views etc. and transaction control statements such as commit/rollback cannot be performed inside a query or a DML statement.

    Action: Ensure that the offending operation is not performed or use autonomous transactions to perform the operation within the query/DML operation.

    Je n'arrive pas très bien à comprendre ce que cela peut bien vouloir dire, ni comment je peux régler mon problème.

    Pouvez vous m'aider svp
    Merci d'avance

  2. #2
    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
    Tu ne peux pas faire de DDL (création de table), commit ou rollback dans un select.

    Donc ta fonction ne peut pas être appelée par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT EXTPCK_MAJSTK.table_imgstk FROM DUAL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    declare v nUMBER;
    begin
     v:= EXTPCK_MAJSTK.table_imgstk;
     dbms_output.put_line('retour:'|| v);
    end;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Par défaut
    Ok j'essaye ca, un tout grand merci pour ta réponse
    Bon après midi

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

Discussions similaires

  1. Problème d'insertion dans une table MYSQL
    Par greg69 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/10/2005, 11h34
  2. Problème de suppression dans une table
    Par Splinter dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/10/2005, 10h55
  3. Creation d'une table avec plusieurs clés
    Par mic79 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/06/2005, 11h17
  4. Problème de dépendances dans une table
    Par PrinceMaster77 dans le forum Outils
    Réponses: 1
    Dernier message: 22/11/2004, 12h39
  5. Réponses: 2
    Dernier message: 02/11/2004, 12h38

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