6.5 Les procédures SQL (stored procedures)
145
© Dunod – La photocopie non autorisée est un délit.
alter table CLIENT
add constraint CHK_CAT
check (CAT is null or CAT in ('B1','B2','C1','C2'))
Le prédicat ci-dessous garantit que les dates de commande (lorsque l’ensemble des
commandes est non vide) sont correctement attribuées selon l'ordre
chronologique 13 :
alter table COMMANDE
add check ((DATECOM >= (select max(DATECOM)
from COMMANDE)
and DATECOM <= CURRENT_DATE) is not false)
Un prédicat peut contribuer au respect d'une contrainte référentielle :
alter table COMMANDE
add check (NCLI in (select NCLI from CLIENT))
Ce dernier protège la table COMMANDE contre l'introduction de valeurs de NCLI
erronées, mais n'offre aucune garantie quant aux modifications du contenu de la
table CLIENT. Il est donc préférable de s'en tenir à la déclaration explicite des clés
étrangères ou, si on désire mettre en place une gestion personnalisée, faire appel à un
déclencheur (voir ci-après).
Une contrainte nommée peut être supprimée :
alter table CLIENT
drop constraint CHK_CAT
Une clause check qui concerne une seule colonne peut être écrite dans la déclaration
de cette dernière :
CAT char(2) check(CAT is null or
CAT in ('B1','B2','C1','C2')),
6.5 LES PROCÉDURES SQL (stored procedures)
Une procédure SQL est une séquence d'instructions SQL précompilées dont l'exécution peut être demandée par un utilisateur, un programme d'application, un trigger
ou une autre procédure SQL. Une procédure autorise l'utilisation de paramètres.
Ceux-ci consistent en des valeurs qui sont communiquées à la procédure ou, au
contraire, que la procédure a calculées et qu'elle communique en retour.
13. Certains SGBD (tels Oracle et DB2) n’admettent qu’une forme réduite de prédicats, dans
lesquels seules les valeurs de la ligne courante peuvent être citées. Pour ces SGBD, les deux
prédicats suivants sont donc interdits. Ils sont en revanche autorisés en InterBase.
145
© Dunod – La photocopie non autorisée est un délit.
alter table CLIENT
add constraint CHK_CAT
check (CAT is null or CAT in ('B1','B2','C1','C2'))
Le prédicat ci-dessous garantit que les dates de commande (lorsque l’ensemble des
commandes est non vide) sont correctement attribuées selon l'ordre
chronologique 13 :
alter table COMMANDE
add check ((DATECOM >= (select max(DATECOM)
from COMMANDE)
and DATECOM <= CURRENT_DATE) is not false)
Un prédicat peut contribuer au respect d'une contrainte référentielle :
alter table COMMANDE
add check (NCLI in (select NCLI from CLIENT))
Ce dernier protège la table COMMANDE contre l'introduction de valeurs de NCLI
erronées, mais n'offre aucune garantie quant aux modifications du contenu de la
table CLIENT. Il est donc préférable de s'en tenir à la déclaration explicite des clés
étrangères ou, si on désire mettre en place une gestion personnalisée, faire appel à un
déclencheur (voir ci-après).
Une contrainte nommée peut être supprimée :
alter table CLIENT
drop constraint CHK_CAT
Une clause check qui concerne une seule colonne peut être écrite dans la déclaration
de cette dernière :
CAT char(2) check(CAT is null or
CAT in ('B1','B2','C1','C2')),
6.5 LES PROCÉDURES SQL (stored procedures)
Une procédure SQL est une séquence d'instructions SQL précompilées dont l'exécution peut être demandée par un utilisateur, un programme d'application, un trigger
ou une autre procédure SQL. Une procédure autorise l'utilisation de paramètres.
Ceux-ci consistent en des valeurs qui sont communiquées à la procédure ou, au
contraire, que la procédure a calculées et qu'elle communique en retour.
13. Certains SGBD (tels Oracle et DB2) n’admettent qu’une forme réduite de prédicats, dans
lesquels seules les valeurs de la ligne courante peuvent être citées. Pour ces SGBD, les deux
prédicats suivants sont donc interdits. Ils sont en revanche autorisés en InterBase.
