Ce qu'un collègue m'a trouvé pour ramener un libellé dans la DI31 quelles que soient les traductions disponibles ...
:-P
L'ordre suivant ne ramènera rien si le libellé n'existe qu'en anglais
select LILONG as LIBCOMP from HR.DI31 where
CDSTDO||VACDST='&CODECOMP' and CDLANG='F'
L'ordre suivant ramènera deux lignes si le libellé est traduit dans les deux langues
select LILONG as LIBCOMP from HR.DI31 where
CDSTDO||VACDST='&CODECOMP' and CDLANG in ('F','U')
Avec cet exemple on prend dans l'ordre le libellé Français, sinon Anglais, Italien ...
Quelles que soient les traductions de l'objet un unique libellé sera affiché suivant l'ordre de préférence indiqué :
select LILONG from
-- on n'affiche que le libellé mais
-- le select dans DI31 est temporairement précédé d'un numéro de ligne
(select
row_number() over
-- ce numéro est réinitialise a rupture CDSTDO, VACDST
(PARTITION by CDSTDO, VACDST
-- les lignes de la partition sont ordonnées suivant une transco numérique du code langue
order by decode(CDLANG, 'F', 9, 'U', 8, 'I', 7, 'E', 6, 'B',5, 'D', 4, 'N', 3, 0) desc, CDLANG asc) as numero,
DI31.*
from HR.DI31)
where
-- on filtre ensuite sur le code souhaité et sur la premiere langue
CDSTDO||VACDST='&CODECOMP' and numero = 1;
ex :
Enter value for codecomp: ZDUAA
LILONG
------------------------------------
Sociétés légales
Enter value for codecomp: ZDKUU
LILONG
------------------------------------
EIC Indicator
Enter value for codecomp: ZYPRF
LILONG
------------------------------------
Profesionales
-- on n'affiche que le libellé mais
-- le select dans DI31 est temporairement précédé d'un numéro de ligne
(select
row_number() over
-- ce numéro est réinitialise a rupture CDSTDO, VACDST
(PARTITION by CDSTDO, VACDST
-- les lignes de la partition sont ordonnées suivant une transco numérique du code langue
order by decode(CDLANG, 'F', 9, 'U', 8, 'I', 7, 'E', 6, 'B',5, 'D', 4, 'N', 3, 0) desc, CDLANG asc) as numero,
DI31.*
from HR.DI31)
where
-- on filtre ensuite sur le code souhaité et sur la premiere langue
CDSTDO||VACDST='&CODECOMP' and numero = 1;
ex :
Enter value for codecomp: ZDUAA
LILONG
------------------------------------
Sociétés légales
Enter value for codecomp: ZDKUU
LILONG
------------------------------------
EIC Indicator
Enter value for codecomp: ZYPRF
LILONG
------------------------------------
Profesionales