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 :

%type et heritage de NOT NULL


Sujet :

SQL Oracle

  1. #1
    Membre actif
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Points : 207
    Points
    207
    Par défaut %type et heritage de NOT NULL
    bonsoir à tous,
    voila ma question:
    est-ce que une variable déclaré avec %type en se reférant à une colonne NOT NULL hérite de cette contrainte?
    voila , merci d'avance pour vos réponses

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Lors de la déclaration d'une variable, l'affectation d'une valeur est facultative... de fait, la variable peut être NULL. Pour s'en convaincre un test simple s'impose :
    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
     
    SQL> create table matable (col number NOT NULL);
     
    Table created.
     
    SQL> set serveroutput on
    SQL> DECLARE
      2    mon_number matable.col%type;
      3  BEGIN
      4    mon_number := 1;
      5    DBMS_OUTPUT.PUT_LINE(mon_number);
      6    mon_number := NULL;
      7    DBMS_OUTPUT.PUT_LINE(mon_number);
      8  END;
      9  /
    1
     
    PL/SQL procedure successfully completed.
    La réponse est donc : NON, pas d'héritage de contrainte.

    CQFD

  3. #3
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Attention au cas suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    declare
      l_var1 Number(1) Not Null := 0;
      l_var2 l_var1%Type := 1;
      l_var3 Number(1);
    begin
      l_var2 := l_var3;
    end;
    /

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    surtout que la cause de l'erreur ne se devine pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-06502: PL/SQL: numeric or value error
    Et non pas une violation de contrainte

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Tiens, je savais même pas qu'on pouvait mettre une contrainte not null sur une variable dans la partie DECLARE.
    En même temps, je vois pas trop dans quel cas l'utiliser.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par McM Voir le message
    Tiens, je savais même pas qu'on pouvait mettre une contrainte not null sur une variable dans la partie DECLARE.
    En même temps, je vois pas trop dans quel cas l'utiliser.
    Je découvre de même...
    Et c'est bien beau, mais pour quoi faire ?

  7. #7
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Ca évite de se taper des NVL partout et de gérer l'exception

Discussions similaires

  1. Ajouter la contrainte NOT NULL a une colone [Firebird 1.5]
    Par crocodingo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/01/2004, 18h52
  2. [SQL] supprimer le "not null" à un type
    Par AnestheziE dans le forum SQL
    Réponses: 10
    Dernier message: 27/11/2003, 13h56
  3. Alter column => passer de NOT NULL à NULL
    Par JohnGT dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/10/2003, 11h16
  4. Réponses: 8
    Dernier message: 24/07/2003, 10h45
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

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