2014-12-20 12 views
5

Provo ad aggiungere una costante nella specifica del pacchetto con il tipo di dati nvarchar2 ma dopo la compilazione memorizza nel database qualcosa come ???. Per esempio cerco di aggiungere una costante per parola armena մեկCostanti NVARCHAR2 nella specifica del pacchetto

x constant nvarchar2(3) default 'մեկ'; 

Qualcuno può suggerire una soluzione a questo problema o è impossibile farlo?

+2

Qual è il set di caratteri del database e impostare carattere nazionale? –

+1

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

+0

@JustinCave nls_characterset = WE8MSWIN1252 e nls_nchar_characterset = AL16UTF16 – arminrock

risposta

0

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 
Problemi correlati