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 :

Je galère en SQL3 sous Oracle


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut Je galère en SQL3 sous Oracle
    Salut, pour mes études j'ai un projet à faire sous Oracle.

    Mais on doit l'utiliser en mode objet, avec du SQL3 (créer des types, des nested tables, des références...)

    C'est super galère, déjà je ne connais pas les requêtes de base pour lister les types créés par exemple.

    Je fais cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create or replace type t_automate as object(
    	id			number(4),
    	lieu		varchar2(250),
    	liste_dvd	t_table_liste_dvd,
    	date_inst	date,
    	constraint pk_automate primary key (id)
    )
    nested table liste_dvd store as table_liste_dvd_automate;
    Ensuite je ne sais pas si mon type a bien été créé, et quels sont les autres types présents sur la base. J'ai essayé ce machin mais ça marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM user_types;
    Merci de votre aide

  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
    Utilises SHOW ERR :
    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
    24
    25
    SQL> CREATE OR REPLACE type t_automate AS object(
      2     id                      number(4),
      3     lieu            varchar2(250),
      4     liste_dvd       t_table_liste_dvd,
      5     date_inst       date,
      6     constraint pk_automate PRIMARY KEY (id)
      7  )
      8  nested TABLE liste_dvd store AS table_liste_dvd_automate;
      9  /
     
    Warning: Type created with compilation errors.
     
    SQL> show err
    Errors for TYPE T_AUTOMATE:
     
    6/25     PLS-00103: Encountered the symbol "PRIMARY" when expecting one of
             the following:
             := . ( ) , @ % not null range default external character
             The symbol "," was substituted for "PRIMARY" to continue.
     
    8/1      PLS-00103: Encountered the symbol "NESTED" when expecting one of
             the following:
             ; not alter final instantiable
     
    SQL>
    Une fois l'erreur corrigee, oui, tu peux voir dans USER_TYPES pour les types de l'utilisateur courant (avec lequel tu es connecte), exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> create type nicolas  as object (c1 number, c2 number);
      2  /
     
    Type created.
     
    SQL> select * from user_types where type_name ='NICOLAS';
     
    NICOLAS                        822AACC51649456AB78A894EB5ABE285
    OBJECT                                  2          0 NO  NO  YES YES
     
    SQL>
    Bon courage,

    Nicolas.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    Merci beaucoup, ça marche, mais comme je débute je vais avoir pas mal de questions bidons pour des initiés, je vais profiter de ce topic pour les poster.

    A commencer par ceci :

    La création de ces 2 types fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    --	Type titre			-------------------------------------------------------------------------------------------
    create or replace type t_titre as object(
    	libelle		varchar2(250),
    	date_paru	date
    );
     
     
    --	Type DVD			-------------------------------------------------------------------------------------------
    create or replace type t_dvd as object(
    	titre		ref t_titre,
    	etat		number(2)
    );
    Après je veux créer un type t_table_liste_dvd pour en faire une nested table plus tard, dans un autre type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    --	Tables de DVD
    create or replace type t_table_liste_dvd as table of t_dvd;
    Et là il me répond ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PLS-00103: Symbole "CREATE" rencontré
    Il y a eu une erreur, donc normalement la table n'a pas été créée. Et pourtant, si j'essaie de supprimer le type t_dvd (dont dépend le type t_table_liste_dvd), il me dit que c'est impossible de supprimer le type t_dvd car d'autres types en dépendent.

  4. #4
    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
    Ca marche tres bien
    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
    SQL> CREATE OR REPLACE type t_titre AS object(
      2     libelle         varchar2(250),
      3     date_paru       date
      4  );
      5  /
     
    Type created.
     
    SQL> CREATE OR REPLACE type t_dvd AS object(
      2     titre           ref t_titre,
      3     etat            number(2)
      4  );
      5  /
     
    Type created.
     
    SQL> CREATE OR REPLACE type t_table_liste_dvd AS TABLE of t_dvd;
      2  /
     
    Type created.
     
    SQL>
    Je pense que tu as seulement oublie le "/" apres chaque creation.

    Nicolas.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    C'est vrai ça marche, en fait j'utilise SQL Developper comme client, et la liste des Types dans le panneau de gauche ne s'était pas mise à jour, on ne voyait pas un type qui existait bel et bien.

    Maintenant je vais vérifier systématiquement avec SELECT * FROM user_types, c'est plus prudent.

    Pour le moment je ne rencontre plus de problèmes, mes nested table fonctionnent, la suppression des types aussi...

    Merci

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

Discussions similaires

  1. Pas de JOIN sous Oracle (vraiment dommage...)
    Par Isildur dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/03/2007, 11h28
  2. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 18h24
  3. comment s'incremente un index sous oracle ?
    Par elitol dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/07/2004, 16h16
  4. LOCATE sous Oracle 8
    Par SubZero2 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/05/2004, 13h47
  5. Recherche de texte dans un blob sous oracle
    Par Invité dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/05/2004, 11h11

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