Bonjour,
Existe-t-il en PL/SQL un moyen des faire des assertions tel que cela se fait en C++ par exemple ?
Merci pour vos réponses.
Version imprimable
Bonjour,
Existe-t-il en PL/SQL un moyen des faire des assertions tel que cela se fait en C++ par exemple ?
Merci pour vos réponses.
C'est quoi une assertion ?
Une assertion, cela revient à tester une condition et, selon le résultat vrai ou faux, interrompre le programme ou bien émettre un signalement.
Par exemple : "assert(var1 = var2);"
Les assertions sont activées la plupart du temps en phase de développement, mais désactivé une fois l'application livrée chez le client (car ça la ralentit).
Cela existe en php, c++, ..., mais je ne connais pas l'équivalent en PL/SQL.
Cela ne me dit rien, mais tu pourrais arriver à un résultat quasi similaire avec la compilation conditionnelle, tu trouveras plus d'info ici
Oui mais en PL/SQL et avec un package de procédure:
Code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123 CREATE OR REPLACE PACKAGE assert IS PROCEDURE istrue ( condition_in IN BOOLEAN, message_in IN VARCHAR2, raise_exception_in IN BOOLEAN := TRUE, exception_in IN VARCHAR2 := 'VALUE_ERROR' ); PROCEDURE isnotnull ( value_in IN VARCHAR2, message_in IN VARCHAR2, raise_exception_in IN BOOLEAN := TRUE, exception_in IN VARCHAR2 := 'VALUE_ERROR' ); PROCEDURE isnotnull ( value_in IN DATE, message_in IN VARCHAR2, raise_exception_in IN BOOLEAN := TRUE, exception_in IN VARCHAR2 := 'VALUE_ERROR' ); PROCEDURE isnotnull ( value_in IN NUMBER, message_in IN VARCHAR2, raise_exception_in IN BOOLEAN := TRUE, exception_in IN VARCHAR2 := 'VALUE_ERROR' ); PROCEDURE isnotnull ( value_in IN BOOLEAN, message_in IN VARCHAR2, raise_exception_in IN BOOLEAN := TRUE, exception_in IN VARCHAR2 := 'VALUE_ERROR' ); END assert; / CREATE OR REPLACE PACKAGE BODY assert IS PROCEDURE istrue ( condition_in IN BOOLEAN, message_in IN VARCHAR2, raise_exception_in IN BOOLEAN := TRUE, exception_in IN VARCHAR2 := 'VALUE_ERROR' ) IS BEGIN IF NOT condition_in OR condition_in IS NULL THEN pl ('Assertion Failure!'); pl (message_in); IF raise_exception_in THEN EXECUTE IMMEDIATE 'BEGIN RAISE ' || exception_in || '; END;'; END IF; END IF; END istrue; PROCEDURE isnotnull ( value_in IN VARCHAR2, message_in IN VARCHAR2, raise_exception_in IN BOOLEAN := TRUE, exception_in IN VARCHAR2 := 'VALUE_ERROR' ) IS BEGIN istrue (value_in IS NOT NULL, message_in, raise_exception_in, exception_in ); END; PROCEDURE isnotnull ( value_in IN DATE, message_in IN VARCHAR2, raise_exception_in IN BOOLEAN := TRUE, exception_in IN VARCHAR2 := 'VALUE_ERROR' ) IS BEGIN istrue (value_in IS NOT NULL, message_in, raise_exception_in, exception_in ); END; PROCEDURE isnotnull ( value_in IN NUMBER, message_in IN VARCHAR2, raise_exception_in IN BOOLEAN := TRUE, exception_in IN VARCHAR2 := 'VALUE_ERROR' ) IS BEGIN istrue (value_in IS NOT NULL, message_in, raise_exception_in, exception_in ); END; PROCEDURE isnotnull ( value_in IN BOOLEAN, message_in IN VARCHAR2, raise_exception_in IN BOOLEAN := TRUE, exception_in IN VARCHAR2 := 'VALUE_ERROR' ) IS BEGIN istrue (value_in IS NOT NULL, message_in, raise_exception_in, exception_in ); END; END assert; /