> Renaud ROSSET
Traitement des erreurs

Traitement des erreurs

  Les erreurs survenant pendant l'exécution d'un trigger SQL sont renvoyées en utilisant SQLSTATE 09000 et SQLCODE - 723. Un trigger SQL peut aussi utiliser l'instruction SIGNAL pour générer ses propres types d'erreurs. Dans de tels cas, un SQLCODE -438 et le SQLSTATE spécifié dans l'instruction SIGNAL seront renvoyés. On accède

Lire l'article
Logique du trigger

Logique du trigger

  Le corps du trigger est constitué d'une ou plusieurs instructions SQL. En général, ce peut être n'importe laquelle d'entre elles. Une restriction a été indiquée précédemment : un trigger avant ne peut pas exécuter des instructions de modifications de données comme Update ou Create. Cette restriction exceptée, la plupart des

Lire l'article
Modifier et corriger des données

Modifier et corriger des données

  ALWREPCHG (Allow Repeated Change) est une autre option de trigger externe dont on peut se demander si les triggers SQL la supportent. Les triggers SQL sont toujours créés avec la valeurALWR EPCHG(*YES). Les triggers externes utilisent cette option principalement pour permettre la modification de données dans la nouvelle image d'enregistrement

Lire l'article
Accès aux données déclenchantes

Accès aux données déclenchantes

  Quand un trigger externe se déclenche, il utilise souvent les données de la requête de la base de données déclenchante. Par exemple, un trigger d'insertion peut placer les données pour une nouvelle ligne dans une file d'attente de données. C'est le buffer des triggers qui met ces données à  la

Lire l'article
Options des triggers

Options des triggers

  La majorité des triggers SQL procurent des fonctionnalités équivalentes aux triggers externes actuels, et aussi une poignée de fonctions dont ne disposent pas les triggers externes.

  Comme une table, un trigger a un nom en deux parties qui inclut un nom de schéma (bibliothèque). Le nom du trigger doit

Lire l'article
Exigences des triggers

Exigences des triggers

  Si vous avez codé des fonctions ou des procédures cataloguées dans les releases précédentes, vous trouverez des points communs avec le développement de triggers SQL sur l'iSeries. En effet, on utilise les mêmes instructions pour coder la logique de gestion dans le trigger, et les triggers SQL sont aussi implémentés

Lire l'article
Figure 3F

Figure 3F

Programme de recherche phonétique dans Customer

FCustSrch 	CF 	E 	WorkStn SFile( RecSfl : SflRecNbr )
F 						IndDS( CustSrchIndDS )
FCustomerL1IF 	E   K Disk
* ===================================================================
* = Entry parameters
* ===================================================================
D EntryParms PR ExtPgm( 'CUSTSRCH' )
D 2 0
D EntryParms PI
D LastNameIn 20
D CustSrchIndDS DS
D Exit

Lire l'article
Figure 3E

Figure 3E

Fichier écran de recherche phonétique dans Customer

* ===================================================================
* = File.......... CustSrch
* = Description... Phonetic customer search
* ===================================================================
A I NDARA
A R RECSFL SFL
A LASTNAME 20 O 5 2
A FIRSTNAME 10 O 5 23
A R RECSFC SFLCTL(RECSFL)
A OVERLAY
A CF03(01)
A 02 SFLEND

Lire l'article
Figure 3D

Figure 3D

Fichier maître Customer par nom phonétiquement

* ===================================================================
* = File.......... CustomerL1
* = Description... Customer Master File with phonetic sequencing =
* ===================================================================
A R CUSTOMERR PFILE(CUSTOMER)
A K LASTSOUND
A K LASTNAME
A K FIRSTNAME

Lire l'article
Figure 3C

Figure 3C

Ajouts de maintenance au fichier maître Customer

C/exec SQL
C+ Set :LastSound = Soundex( :LastName )
C/end-exec

Lire l'article
Figure 3B

Figure 3B

Nouveau fichier maître Customer

* ===================================================================
* = File.......... Customer
* = Description... Customer Master File
* ===================================================================
A R CUSTOMERR
A CUSTID 5
A LASTNAME 20
A FIRSTNAME 10
A LASTSOUND 4
A K CUSTID

Lire l'article
Figure 3A

Figure 3A

Fichier maître Customer

* ===================================================================
* = File.......... Customer
* = Description... Customer Master File
* ===================================================================
A R CUSTOMERR
A CUSTID 5
A LASTNAME 20
A FIRSTNAME 10
A K CUSTID

Lire l'article
Figure 2B

Figure 2B

Extraire la valeur week-of-year ISO avec la fonction scalaire Week_ISO

* ===================================================================
* = Description... Retrieve ISO week-of-year
* ===================================================================
D SomeDate 	S 		D Inz( D'2001-10-23' )
D ISOWeek 	S 		5I 0
C/exec SQL
C+ Set :ISOWeek = Week_ISO( SomeDate )
C/end-exec
C Eval *InLR = *On

Lire l'article
Figure 2A

Figure 2A

Extraire la valeur week-of-year ISO avec RPG seulement

* ===================================================================
* = Description... Retrieve ISO week-of-year
* ===================================================================
D RtvDayOfWeek 	PR 		5I 0
D 						D Value
D RtvISOWeek 	PR 		5I 0
D 						D Value
D SomeDate 		S 			D Inz( D'2001-10-23' )
D ISOWeek 		S 		5I 0
C 				Eval ISOWeek = RtvISOWeek(

Lire l'article
Figure 1B

Figure 1B

Extraire la valeur day-of-week avec la fonction scalaire DayOfWeek

* ===================================================================
* = Description... Retrieve day-of-week
* ===================================================================
H NoMain
D RtvDayOfWeek 	PR 		5I 0
D 						D Value
P RtvDayOfWeek 	B 			Export
D RtvDayOfWeek 	PI 		5I 0
D DateIn 					D Value
D DayOfWeekNbr 	S 		5I 0
C/exec SQL
C+ Set :DayOfWeekNbr

Lire l'article
Figure 1A

Figure 1A

Extraire la valeur day-of-week avec RPG seulement

* ===================================================================
* = Description... Retrieve day-of-week
* ===================================================================
H NoMain
D RtvDayOfWeek 	PR 		5I 0
D 						D Value
P RtvDayOfWeek 	B 		Export
D RtvDayOfWeek 	PI 		5I 0
D DateIn 					D Value
D SomeSunday 	S 			D Inz( D'2001-05-20' )
D Days 		S 		10I 0

Lire l'article
Essayez donc

Essayez donc

  On voit bien que les fonctions scalaires SQL sont simples et puissantes. Je vous engage vivement à  consulter les articles et les manuels IBM indiqués dans l'encadré Autres lectures, pour voir quelles fonctions scalaires vous sembleront utiles. Soyez certain que quand vous en trouverez une et l'utiliserez, vos applications seront

Lire l'article
 » à‡a ressemble à  …  » n’est pas simplement pour des charades

 » à‡a ressemble à  …  » n’est pas simplement pour des charades

  L'une des compagnies aériennes que j'utilise pourrait faire son profit des fonctions scalaires SQL. Ou plutôt, les clients de cette compagnie aérienne devraient en profiter ! Je vais démontrer comment par le récit d'une mésaventure et des exemples de l'une de mes fonctions scalaires favorites, Soundex, ajoutée dans la V4R5.

Lire l'article
Engranger les bénéfices

Engranger les bénéfices

  Voyons un exemple avec des avantages plus évidents . L' ISO (International Standards Organization) définit un standard (ISO 8601) pour calculer la semaine de l'année dans laquelle tombe une certaine date. Selon ce standard, lundi marque le début de la semaine et la première semaine d'une année contient le premier

Lire l'article
Le mécanisme des fonctions scalaires imbriquées

Le mécanisme des fonctions scalaires imbriquées

  Ceux qui pensent que le SQL imbriqué est source de confusion et se demandent pourquoi s'en préoccuper, seront peut-être surpris en voyant la simplicité avec laquelle on peut imbriquer des fonctions scalaires dans les applications. Pour illustrer cela, examinons à  nouveau la fonction scalaire DayOfWeek. La figure 1A présente un

Lire l'article