Création de domaines sous Oracle

Manuella -  
 Manuella -
Bonjour,
Quelqu'un pourrait-il me rappeler comment on crée des domaines (listes de valeurs qui ne changent pas (ex: OUI/NON, mois de l'année,...)) sous Oracle, enfin plutôt sous SQL*Plus ?
Merci d'avance.

3 réponses

  1. zeus
     
    pour un domaine vaste voici la solution conseillée :

    -ce n'est qu'un exemple -

    CREATE DOMAIN mois varchar(9)
    CONSTRAINT bon_mois
    CHECK ( VALUES IN ('janvier','février','mars',........))

    maintenant tu peux créer ta tables ou tes tables en te basant sur le domaine que tu as défini

    CREATE TABLE T_1 (
    T_1_id ............ INT ,
    T_1_nom ........ varchar(20),
    .
    .
    .
    T_1_mois........ mois , <------- utilisation du domaine
    ...

    )

    @+
    zeus
    0
    1. Manuella
       
      Merci beaucoup !
      Je vais essayer ça de ce pas...
      0
    2. Manuella
       
      Zut de zut ça marche pas, j'ai une erreur "Commande CREATE non valide".

      Merci quand même Zeus.

      Si quelqu'un a une autre solution...
      0
  2. zeus
     
    là j'ai pas oracle sous la main mais essaye ceci :

    on va simplifier la "chose"

    CREATE DOMAIN mois AS varchar(9)
    CHECK ( VALUES IN ('janvier','février','mars',........))
    0
    1. Manuella
       
      J'ai essayé cette nouvelle écriture mais j'ai toujours le même message d'erreur.
      Apparemment il ne connaît pas le mot DOMAIN ou alors il ne faut pas passer par un CREATE.
      Ne serait-il pas plus simple de créer un type utilisateur ? ou une collection ?

      A bientôt...
      0
  3. zeus
     
    tu as raison je viens de me réinstaller oracle
    pourtant j'étais sûr que cela était possible avec avec oracle
    la syntaxe fonctionne pourtant avec sybase et interbase (avec quelques petites différences)

    bon là cela doit fonctionner mais le probléme est que l'on perd l'avantage de la définition de DOMAINE ... et un sacré avantage !!! :

    create table mois (
    mois VARCHAR(15) CONSTRAINT bon_mois CHECK (mois IN ('janvier','fev'))
    );

    avec la création de type utilisateur tu aurais comme avantage la possibilité de réutiliser ton nouveau type (comme j'ai essayé de te le démontrer avec les domaines )

    mais ta question était : est-ce plus simple ?
    je sais pas j'ai jamais utilisé la création de type
    mais là je te renvoie à cette page :
    http://www.laltruiste.com/courssql/type_creation.html
    0
    1. Manuella
       
      Merci infiniment pour tes précieux conseils Zeus !

      Mon objectif en créant un domaine était de ne pas créer une nouvelle table donc je vais plutôt essayer les types.
      Je vais aller jeter un coup d'oeil sur le lien, ça a l'air bien comme site...
      Encore merci pour le tuyau.

      Manuella
      0