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

Oracle Discussion :

Problème CREATE TABLE


Sujet :

Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Points : 53
    Points
    53
    Par défaut Problème CREATE TABLE
    Bonjour d'avance merci pour votre temps et aide.

    Je voudrais créer les tables suivantes mais Oracle m'indique une erreur dans mon code or franchement j'ai beaucoup de mal à voir ou se situe l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Rapport d'erreur Oracle -
    Erreur SQL : ORA-00907: parenthèse de droite absente
    00907. 00000 -  "missing right parenthesis"
    *Cause:    
    *Action:
    -- DROP TABLE IF EXISTS RESULTAT;
    -- DROP TABLE IF EXISTS EXAMEN;
    -- DROP TABLE IF EXISTS PREREQUIS;
    -- DROP TABLE IF EXISTS INSCRIPTION;
    -- DROP TABLE IF EXISTS MODULE;
    -- DROP TABLE IF EXISTS ETUDIANT;

    CREATE TABLE ETUDIANT
    (numEtud int PRIMARY KEY,
    nom varchar(40),
    prenom varchar(40),
    datenaiss date,
    civilite varchar(4),
    patronyme varchar(40),
    numsecu varchar(15) NOT NULL
    );

    CREATE TABLE MODULE
    (numMod int PRIMARY KEY,
    nomMod varchar(15),
    effecMax int DEFAULT 30
    );

    CREATE TABLE EXAMEN
    (numMod int REFERENCES MODULE(numMod),
    numExam int,
    dateExam date,
    PRIMARY KEY(numMod, numExam)
    );

    CREATE TABLE INSCRIPTION
    (numEtud int REFERENCES ETUDIANT(numEtud),
    numMod int REFERENCES MODULE(numMod),
    dateInsc date,
    PRIMARY KEY(numEtud, numMod)
    );

    CREATE TABLE PREREQUIS-------------Voici le code qui pose problème
    (numMod int REFERENCES MODULE(numMod),
    numModPrereq int REFERENCES MODULE(numMod),
    noteMin int NOT NULL DEFAULT 10,
    PRIMARY KEY(numMod, numModPrereq)
    );

    CREATE TABLE RESULTAT
    (numMod int,
    numExam int,
    numEtud int,
    note int,
    PRIMARY KEY(numMod, numExam, numEtud),
    FOREIGN KEY (numMod, numExam) REFERENCES EXAMEN(numMod, numExam),
    FOREIGN KEY (numEtud, numMod) REFERENCES INSCRIPTION(numEtud, numMod)
    );

    INSERT INTO MODULE (numMod, nomMod) VALUES
    (1, 'Oracle'),
    (2, 'C++'),
    (3, 'C'),
    (4, 'Algo'),
    (5, 'Merise'),
    (6, 'PL/SQL Oracle'),
    (7, 'mySQL'),
    (8, 'Algo avancee');

    INSERT INTO PREREQUIS (numMod, numModPrereq) VALUES
    (1, 5),
    (2, 3),
    (6, 5),
    (8, 5),
    (7, 5);
    INSERT INTO PREREQUIS VALUES (6, 1, 12);

    Merci pour vos suggestions.

  2. #2
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Points : 53
    Points
    53
    Par défaut
    Je pense avoir trouvé et compris l'erreur renvoyé par Oracle.

    Pas nécessaire d'indiquer NOT NULL sur une valeur DEFAULT

    CREATE TABLE PREREQUIS
    (numMod int REFERENCES MODULE(numMod),
    numModPrereq int REFERENCES MODULE(numMod),
    noteMin int DEFAULT 10,
    PRIMARY KEY(numMod, numModPrereq)
    );
    Cela fonctionne beaucoup mieux !

  3. #3
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Points : 926
    Points
    926
    Par défaut
    Bonjour,

    Pas nécessaire d'indiquer NOT NULL sur une valeur DEFAULT
    C'est faux. En fait c'est une question d'ordre des clauses : il faut mettre le NOT NULL en dernier, comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CREATE TABLE PREREQUIS
    (noteMin int DEFAULT 10 NOT NULL) ;
    Si vous ne faites pas cela, on peut insérer du NULL sans pb. Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TABLE PREREQUIS
    (texte varchar2(256),
     noteMin int DEFAULT 10) ;
     
    insert into prerequis values ('J''insère du NULL sans pb malgrè la clause DEFAULT !', NULL) ;
    commit ;

  4. #4
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Points : 53
    Points
    53
    Par défaut
    En effet je vois ça !

    Merci de m'avoir corrigé car manifestement j'avais tort.
    Je garde ça en mémoire.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Votre générateur de MPD n'est pas configuré pour Oracle Database, on dirait un script MySQL.

    Oracle a une particularité historique, il utilise le type varchar2 : bien qu'il y ait un synonyme de varchar vers varchar2, c'est en attendant une évolution de la norme ou quelque chose dans le genre.
    À terme ça pourrait être deux types différents.

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

Discussions similaires

  1. Problème Create table SQLIte Android
    Par abradax dans le forum Android
    Réponses: 2
    Dernier message: 06/05/2013, 11h35
  2. Réponses: 2
    Dernier message: 08/03/2010, 13h45
  3. Problème avec create table access en asp
    Par raymon dans le forum ASP
    Réponses: 2
    Dernier message: 03/11/2009, 18h27
  4. Problème CREATE TABLE AS
    Par Traceman dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/10/2007, 14h50
  5. Problème SQLCe create Table
    Par sarko_sisko dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/08/2007, 08h32

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