ORA-12713 lors de l'exécution d'un rapport dans un environnement Unix
S'APPLIQUE À : Oracle Reports Developer
Oracle Reports Developer - Version 11.1.2.1.0 et ultérieures
Les informations de ce document s'appliquent à toutes les plateformes.
Pertinence vérifiée le 01-FEB-2016
SYMPTÔMES : SQL*ReportWriter, NLS_LANG
Sur SQL*ReportWriter version 11.1.2.1.0 ou ultérieure
Lors de l'exécution d'un rapport particulier dans un environnement Unix avec NLS_LANG défini à CANADIAN FRENCH_CANADA.WE8ISO8859P1 dans reports.sh, l'erreur suivante se produit.
ERREUR
-----------------------
REP-771: Une erreur grave PL/SQL s'est produite dans l'unité de programme afterpform.
ORA-12713: Perte de caractères dans la conversion NCHAR/CHAR
ÉTAPES
-----------------------
Le problème peut être reproduit à volonté en suivant ces étapes :
1. Installez Oracle Reports sous Linux et, dans reports.sh, remplacez la valeur de NLS_LANG par CANADIAN FRENCH_CANADA.WE8ISO8859P1
2. exécutez votre rapport avec
$INSTANCE_HOME/config/reports/bin/rwclient.sh server=rep_custom report=/path/tf5003.rdf userid=$HIDDEN desformat=PDF destype=file desname=/tmp/out.pdf
CHANGEMENTS : valeur de NLS_LANG
La valeur de NLS_LANG a été modifiée dans reports.sh
CAUSE : message d'erreur REP-1401, ORA-12713
Le NLS_LANG de la base de données est défini à CANADIAN FRENCH_CANADA.WE8MSWIN1252 : le jeu de caractères ne correspond donc pas à celui qu'utilise maintenant le Reports Server. Il existe en outre un bogue connu :
Bug 9765970 : REPORTS FAILS WITH REP-1401: AND ORA-12713 AFTER UPGRADE TO 11G MID
-----BUG Excerpt ------
The error message REP-1401: and ORA-12713 occurs on trying to use a function call in the program unit in Developer 11g
The stored procedure
=========================
create or replace function bossard_test_case1_f return string as
vtest varchar2(20);
begin
select c1 into vtest from bossard_test_case1_t;
return vtest;
end bossard_test_case1_f;
/
The code in the reports
========================
function CF_1Formula return varchar2 is
begin
return bossard_test_case1_f;
end;
Error
========================
REP-1401: A fatal PL/SQL error occurred in program unit cf_1formula.
ORA-12713: Character data loss in NCHAR/CHAR conversion
....
---- End of Excerpt
SOLUTION : développeurs Oracle Database
Le problème décrit a déjà été signalé comme un BOGUE, mais les développeurs ont déterminé qu'il ne s'agit pas d'un bogue, mais d'un comportement attendu du côté de Reports.
Si vous utilisez des caractères UTF8, la solution consiste à utiliser un jeu de caractères NLS UTF8 ou AL32UTF8 des deux côtés (base de données et client).
*WE8MSWIN1252 peut être utilisé si l'hôte est sous Windows