Ho testato l'esempio su due database diversi con diverse configurazioni NLS_CHARACTERSET
.
Configurazioni (recived dal interrogazione -
select *
from v$nls_parameters
where parameter in ('NLS_NCHAR_CHARACTERSET','NLS_CHARACTERSET','NLS_LANGUAGE')
):
Primo:
+----+------------------------+----------+
| id | PARAMETER | VALUE |
+----+------------------------+----------+
| 1 | NLS_LANGUAGE | AMERICAN |
| 2 | NLS_CHARACTERSET | AL32UTF8 |
| 3 | NLS_NCHAR_CHARACTERSET | AL16UTF16|
+----+------------------------+----------+
Secondo:
+----+------------------------+-------------+
| id | PARAMETER | VALUE |
+----+------------------------+-------------+
| 1 | NLS_LANGUAGE | RUSSIAN |
| 2 | NLS_CHARACTERSET | CL8MSWIN1251|
| 3 | NLS_NCHAR_CHARACTERSET | AL16UTF16 |
+----+------------------------+-------------+
E il risultato sta seguendo, il DB con set di caratteriLa variabilevisualizza correttamente, nel set di caratteri CL8MSWIN1251
con le domande '???'.
Non ho modificato i messaggi sui database per convalidare il mio suggerimento. Quindi ti suggerisco di cambiare NLS_CHARACTERSET
a AL32UTF8
che dovrebbe aiutare.
Il mio pacchetto per le prove:
create or replace package question27577711 is
x constant nvarchar2(3) default 'մեկ';
function get_constant_x return nvarchar2;
end question27577711;
create or replace package body question27577711 is
function get_constant_x
return nvarchar2
is
begin
return x;
end get_constant_x;
end question27577711;
select question27577711.get_constant_x from dual
fonte
2016-01-03 09:02:13
Qual è il set di caratteri del database e impostare carattere nazionale? –
possibile duplicato di [Come evitare Σ passando a S quando compiliamo in plsql?] (Http://stackoverflow.com/questions/27519203/how-to-avoid-%ce%a3-turning-to-s-when -we-compile-in-plsql) – user272735
@JustinCave nls_characterset = WE8MSWIN1252 e nls_nchar_characterset = AL16UTF16 – arminrock