Voici les principales nouveautés concernant la base de données DB2/400 V4r2 Elles vont toutes vers plus de conformité au standard SQL. - Sécurité (droits) à la colonne : ...................................................................... : Grant Select, : : update(notel, adr1, adr2) : : on table personp1 : : to pdupont; : :....................................................................: ici on accorde le droit de lecture (toutes colonnes) et le droit de modifier les colonnes N° de tel et adresses à PDupont. les commandes DSPOBJAUT et EDTOBJAUT montrerons les autorisations de niveau zone, mais ne permetterons pas la modification. les droits seront vérifiés aussi bien en SQL qu'en RPG/COBOL |
soit l'ordre SQL suivant : GRANT UPDATE(ADR1, ADR2) ON FORMATION0/CLIENTP1 TO QUSER sql affiche GRANT de droits pour CLIENTP1 de FORMATION0 exécutée. puis, sur un ordre: UPDATE FORMATION0/CLIENTP1 SET NOCLI = 0 on recoit SQL0901 "Erreur système SQL." alors qu'avec DFU, l'ouverture du fichier est déclarée impossible avec les messages suivants : CPF5134 : non autorisé à traiter la demande sur le membre CLIENTP1. DFU0861 : Vous n'êtes pas autorisé à effectuer l'opération demandée. |
- Check Contraints ou contraintes de domaine : il s'agit d'établir un contrôle sur une zone (doit être > à , <> de ...) devant être TOUJOURS vérifié. les contrôles demandés aujourd'hui (CHEKC, RANGE, VALUES) ne sont vérifiés que dans un monde transactionnel (gestionnaire écran) les nouvelles contraintes seront vérifiés dans toutes les conditions en cas d'erreur ==> message CPF502F ............................................................ : ADDPFCST FILE(PERSONP1) TYPE(*CHKCST) CST(SALAIRE_CST) : : CHKCST(Salair > 6663,67 and prime < salair) : :..........................................................: en SQL ............................................................ : Alter table entcdep1 add constraint dates_commandes : : Check (datliv > datcmd) : :..........................................................: |
Bien sur cela fonctionne comme les contraintes de type *REFCST en cas d'ajout de la contrainte sur un fichier non vide Complément d'informations sur message ID message . . . . . . : CPD32D3 Gravité . . . . . . . : 20 Type de message . . . : Information Message . . . . : Valeurs de zone incorrectes pour la contrainte de vérification. Cause . . . . . : La contrainte de vérification DATES_COMMANDES pour le fichier CDEENTP1 de la bibliothèque FORMATION0 est en instance de vérification. La contrainte est en instance de vérification car l'enregistrement 3 du fichier comporte une zone dont la valeur est incompatible avec l'expressi de la contrainte de vérification. S'il s'agit de l'enregistrement 0 du fichier, soit cet enregistrement n peut pas être identifié, soit il ne s'applique pas à l'état d'instance de vérification. |
et les contraintes peuvent être gérées par WRKPFCST : ............................................................................ : : : Gestion des contraintes de fichier physique : : : :Indiquez vos options, puis appuyez sur ENTREE. : : 2=Modifier 4=Enlever 6=Afficher enreg en instance de vérif : : : : Vérification: : en : :Opt Contrainte Fichier Biblio Type Etat instance : : DATES_COMM > CDEENTP1 FORMATION0 *CHKCST ETB/DES OUI : : : :..........................................................................: ici le fichier est "étabie/désactivée" puisqu'il y a des enregistrements ne correspondant pas à la demande [datliv > datcde] |
l'Option 6 affiche le(les) enregistrement(s) en erreur : .......................................................................... : Affichage du rapport : : Largeur . .: 71 : : Colonne . .: 1 : : Contrôle . . . . : : Ligne ....+....1....+....2....+....3....+....4....+....5....+....6 : : N° N° : : CDE CLIENT DATE CDE DATE LIV : : -------- -------- ---------- ---------- : : 000001 3 1 01.01.1940 01.01.1940 : : ****** * * * F I N D E S D O N N E E S * * * : : : :........................................................................: Après avoir modifié l'enregistrement il faut désactiver, puis réactiver la contrainte, qui devient alors "établie / active". |
- Procédures cataloguées écrites en SQL : Aujourd'hui les procédures cataloguées sont écrites en RPG/COBOL et enregistrées en SQL par CREATE PROCEDURE ......................................................................... : Create Procedure bib/p1 : : (in nomatin DEC(6, 0), ############################ : : in newcoef DEC(3, 0), # ATTENTION # : : out codert int) # # : : language SQL # il faut le compilateur C # : : P1: ############################ : : Begin : : Declare coeflu DEC(3, 0); : : Declare Exit handler for SQLExecption Set codert=SQLCODE; : : Select coef from personp1 into coeflu where nomat = nomatin; : : if newcoef > coeflu then : : update personp1 set coef = newcoef : : where nomat = nomatin; : : end if; : : End : :.......................................................................: |
- SQL atomique il s'agit d'une série d'ordres SQL devant être considérés comme un tout (uniquement dans les procédures cataloguées) ......................................................... : Begin Atomic : : Update fichier1 : : SET ... where ... : : Update fichier2 : : SET ... where ... : : End : :.......................................................: - Expressions conditionnelles un expression en SQL représente un traitement sur une plusieurs zones (concaténation/extraction, calcul, ...) il s'agit ici, de pouvoir donner des conditions à ces traitements : |
................................................................... : Select cours, texte, case dispo : : when 1 then 'lecture' : : when 2 then 'Impression' : : when 3 then 'Les deux' : : end AS Disponible : : from AF4MBRP1 : :.................................................................: ........................................................................... : Select noart, qtecde, puart, case : : when codepays <> 'F' then puart : : when dep = 97 then puart *1,09 : : else puart *1,206 : : end as TTC : : from cdecli : :.........................................................................: - CAST = fonction de changement de type CAST(expression as type(lg)) |
- valeur par défaut : a/ Default user = la valeur par défaut est le profil en cours ....................................................................... : Create table histo (quand DATE not null with default, : : qui CHAR(10) not null with default user) : :.....................................................................: b/ mot-clé default dans les ordres INSERT et UPDATE ....................................................................... : Insert into HISTO (quand, qui) : : values(current date, default) : :.....................................................................: - réseau DRDA et DDM sont admis sur TCP/IP |
- disponibilité SAVE WHILE ACTIVE ammélioré Support maintenant des commandes CLRPFM, RMVM, ... pendant une sauvegarde. remote journaling Il est possible de déclarer un récepteur de journal DISTANT mais uniquement par API. (commandes en V4R30) - performances Construction des indexs en parallèlle (intégré au produit sous licence DB2 Symmetric Multiprocessing) Utilisation de plusieurs indexs par fichier afin de mieux traiter les sélections complèxes basées sur des ET et des OU. |