Ich habe Sie Beispiel auf zwei verschiedenen Datenbanken mit verschiedenen NLS_CHARACTERSET
Konfigurationen getestet.
Konfigurationen (durch Abfrage recived -
select *
from v$nls_parameters
where parameter in ('NLS_NCHAR_CHARACTERSET','NLS_CHARACTERSET','NLS_LANGUAGE')
):
Erstens:
+----+------------------------+----------+
| id | PARAMETER | VALUE |
+----+------------------------+----------+
| 1 | NLS_LANGUAGE | AMERICAN |
| 2 | NLS_CHARACTERSET | AL32UTF8 |
| 3 | NLS_NCHAR_CHARACTERSET | AL16UTF16|
+----+------------------------+----------+
Zweitens:
+----+------------------------+-------------+
| id | PARAMETER | VALUE |
+----+------------------------+-------------+
| 1 | NLS_LANGUAGE | RUSSIAN |
| 2 | NLS_CHARACTERSET | CL8MSWIN1251|
| 3 | NLS_NCHAR_CHARACTERSET | AL16UTF16 |
+----+------------------------+-------------+
Und das Ergebnis folgt, auf DB mit Zeichensatz AL32UTF8
Variable zeigt korrekt an, Zeichensatz CL8MSWIN1251
mit Fragen '???'.
Ich habe Charsests in Datenbanken nicht geändert, um meinen Vorschlag zu validieren. Also schlage ich vor, Sie ändern NLS_CHARACTERSET
zu AL32UTF8
es sollte helfen.
Mein Paket für Tests:
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
Was die Datenbank-Zeichensatz und den nationalen Zeichensatz ist? –
mögliches Duplikat von [Wie vermeidet man, dass man sich bei der Kompilierung in plsql an S wendet?] (Http://stackoverflow.com/questions/27519203/how-to-avoid-%ce%a3-turning-to-s-when -we-compile-in-plsql) – user272735
@JustinCave nls_characterset = WE8MSWIN1252 und nls_nchar_characterset = AL16UTF16 – arminrock