30 juillet 2014

Livrer le nombre d'occurrences des Host tables d'une information (radicaux des tables en plate forme physique)

 Depuis HRv9, l'objet plate forme physique permet de spécifier le nombre d'occurrences des HOST-TABLES de chargement de ZX (cf "chargement-du-prdb-par-host-tables") :



On peut en retrouver les valeurs en base dans la table PP30 :

SQL> select * from PP30 where NBOCCR > 0 and CDPLPH in (select CDPLPH from PP10 where CDCPOM = '1');

CDPLPH   CD CD RDTABL   PR SU PR SU PR SU PR SU TIMODI                  NBOCCR
-------- -- -- -------- -- -- -- -- -- -- -- -- ------------------- ----------
PPCLIUNO ZX                                     2013-04-22-18.20.34        150
PPCLIUNO ZX 5C                                  2013-04-22-18.20.54       3500
PPCLIUNO ZX 8K                                  2013-08-21-15.15.37        999


Lors des générations, cette valeur impacte la macro BGVHV2. Ci dessous un extrait du programme BEB :
000875 01 HTB-CLZX5C PIC S9(4) COMP.                                    BGVHV2
000876 01 HTB-CLZX5C-MAX VALUE 3500  PIC S9(4) COMP.                    BGVHV2
000877 01 HTB-ZX5C.                                                     BGVHV2
000878  02 HTB-ZX5C-NUDOSS OCCURS  3500 PIC S9(9) COMP.                 BGVHV2

...

Pour livrer ces valeurs, il faut exporter l'objet information concerné. Ci dessous un extrait du fichier d'export de l'information ZX5C : 
grep PP30 PSBBC101
0017INZX5C    PP307.0000000PPCLIUNOZX5C                        2013-04-22-18.20.543500  *



Si vous constatez que le nombre d'occurrences est absent du fichier, demandez un correctif à l'éditeur.

24 juillet 2014

SQLPlus : influence du parametre cursor_sharing sur l'affichage des champs caractères

Vu sous Oracle 11.2.0.3  :
La longueur des champs caractères affichée sous SQLPlus peut varier en fonction du paramètre de session cursor_sharing :
  • cursor_sharing = exact
  • cursor_sharing = force

SQL> alter session set cursor_sharing = exact ;
Session altered.

SQL> select 'constant1', 'constant2' from dual ;
'CONSTANT 'CONSTANT
--------- ---------
constant1 constant2


SQL> alter session set cursor_sharing = force ;
Session altered.
SQL> select 'constant1', 'constant2' from dual;
 
'CONSTANT1'                      'CONSTANT2'
-------------------------------- --------------------------------
constant1                        constant2

SQL> show parameter cursor_sharing
NAME           TYPE   VALUE
-------------- ------ --------
cursor_sharing string force

 

Merci Didier pour cette analyse.

22 juillet 2014

BU2-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : EN10/INSERT/9I/9Z/000000000020101

Ce message d'erreur peut apparaître lors d'un chargement d'objets par la chaine RB4 quand le groupe d'appartenance de l'objet est absent.

Pour la plupart des objets, les données de description sont stockées dans une arborescence de tables. Par exemple les objets "Groupes de Traitements" sont stockés en table TR10, les "Traitements" en table TR20, etc... Et il existe des contraintes de "Clef étrangère" entre ces tables.

Ainsi, si l'on cherche à charger un Traitement dont le groupe n'existe pas, on obtiendra une erreur SQL du type "Parent Key not found".

Pour certains objets, la description des données est stockée dans des tables "banalisées" (GO**, EN**, LB**, RC**, FQ** ...). Les relations entre tables sont alors gérées par des triggers. Le code retour SQL Oracle 20101 correspond à une erreur émise par le Trigger.

Par exemple en fin de prod/ddl/TZ7.sql on trouve :

...
    IF P_RECONNU = 0 THEN
      RAISE_APPLICATION_ERROR(-20102,'UNKNOWN HR ENTITY TYPE');
    END IF;
    IF P_COMPTEUR = 0 THEN
      RAISE_APPLICATION_ERROR(-20101,'HR INTEGRITY ERROR');
    END IF;



Pour débloquer l'import, déterminer l'objet posant problème et importez (sinon créez manuellement) l'objet groupe manquant.

Si l'objet groupe fait partie de l'export, cela signifie que les objets n'ont pas été exportés dans le bon ordre. Demandez un patch à l'éditeur.