31 janvier 2014

Erreur BQL au chargement : Clef en double - S1/EXECUTE/10/PK/000000000000001

Christian relance une NJU incidentée du fait d'un disque plein. Mais le chargement par BQL de ZX5W se bloque sur une erreur de "clef en double" qui n'existait pas auparavant :

*GE01BQL-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : S1/EXECUTE/10/PK/000000000000001
*GE01BQL-00000000- INSERT INTO       HR.ZX5W        (NUDOSS,NULIGN,SOCDOS,PGPDOS,CODCHN,TYREPO,IDC
*GE01BQL-00000000-HN ,TIMCHN,STATUS,IDGPRG,SOCCLE,MATRIC,NUDOSP,IDSITU,PERPAI,USAGEP,NUMTRT,NUMBUL
*GE01BQL-00000000-,TIMEST) VALUES ( +000066862, +000001, '100', +001230000, 'NJU', 'D', 'DADSU2013
*GE01BQL-00000000-         ', TO_DATE ('2014-01-30-19.14.58','YYYY-MM-DD-HH24-MI-SS'), '0', +00123
*GE01BQL-00000000-0000, '100', '00566       ', +001, '  ', 'MT201301', 'S', '0', '01', TO_DATE ('0
*GE01BQL-00000000-001-01-01-00.00.00','YYYY-MM-DD-HH24-MI-SS'))
*GE01BQL-BBAD0008-STATISTIQUES SUR LES FICHIERS (ENREGISTREMENTS LUS/ECRITS)
*GE01BQL-BBAD0009-PA (PA) : 000000000000001
*GE01BQL-BBAD0009-SQ (SQ) : 000000000000337
*GE01BQL-BBAD0011-*** BQL : FIN ANORMALE - HORODATAGE DE FIN   : 2014-01-30-19.21.32  **** CODE RETOUR 99 ******


Après analyse, il s'est avère que:
  • Une première exécution de BQL s'est interrompue en cours de chargement,
  • Lors de cette exécution la ZXTD12 a été purgée,
Lorsque la chaine est relancée :
  • Sans données dans la ZXTD12, la chaine choisit de prendre un NULIGN = 1
  • Mais ce n° est déjà pris :


NUDOSS NULIGN SOC PGPDOS COD T IDCHN TIMCHN S IDGPRG SOC MATRIC NUDOSP ID PERPAI U N NU TIMEST
---------- ---------- --- ---------- --- - ------- ------------------- - ---------- --- ------------ ---------- -- -------- - - -- -------------------
66862 1 100 1230000 NJ6 C RFEDB 2013-01-23-13.51.46 0 1230000 100 00566 1 MT201301 S 0 01 0001-01-01-00.00.00


Solution : reconstruire la ZXTD12 en exécutant une ROL (dans certains cas simple un SQL d'INSERT peut suffire).