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
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
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 :
La réponse est donc : NON, pas d'héritage de contrainte.
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.
CQFD
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; /
surtout que la cause de l'erreur ne se devine pas :
Et non pas une violation de contrainte
Code : Sélectionner tout - Visualiser dans une fenêtre à part ORA-06502: PL/SQL: numeric or value error
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
Ca évite de se taper des NVL partout et de gérer l'exception
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager