5
我嘗試使用nvarchar2
數據類型在包規範中添加常量,但在編譯之後,它將存儲在數據庫中,如???
。例如,我嘗試添加一個常數亞美尼亞字մեկ
包規範中的NVARCHAR2常量
x constant nvarchar2(3) default 'մեկ';
任何人都可以提出一個解決這個問題,或者是不可能這樣做呢?
我嘗試使用nvarchar2
數據類型在包規範中添加常量,但在編譯之後,它將存儲在數據庫中,如???
。例如,我嘗試添加一個常數亞美尼亞字մեկ
包規範中的NVARCHAR2常量
x constant nvarchar2(3) default 'մեկ';
任何人都可以提出一個解決這個問題,或者是不可能這樣做呢?
我測試過你在兩個不同的數據庫上使用不同的NLS_CHARACTERSET
配置的例子。
配置(通過查詢recived -
select *
from v$nls_parameters
where parameter in ('NLS_NCHAR_CHARACTERSET','NLS_CHARACTERSET','NLS_LANGUAGE')
):
第一:
+----+------------------------+----------+
| id | PARAMETER | VALUE |
+----+------------------------+----------+
| 1 | NLS_LANGUAGE | AMERICAN |
| 2 | NLS_CHARACTERSET | AL32UTF8 |
| 3 | NLS_NCHAR_CHARACTERSET | AL16UTF16|
+----+------------------------+----------+
二:
+----+------------------------+-------------+
| id | PARAMETER | VALUE |
+----+------------------------+-------------+
| 1 | NLS_LANGUAGE | RUSSIAN |
| 2 | NLS_CHARACTERSET | CL8MSWIN1251|
| 3 | NLS_NCHAR_CHARACTERSET | AL16UTF16 |
+----+------------------------+-------------+
,結果是以下,對DB與字符集AL32UTF8
變量正確顯示,字符集CL8MSWIN1251
有問題'???'。
我沒有更改數據庫的字符集來驗證我的建議。所以我建議你將NLS_CHARACTERSET
更改爲AL32UTF8
它應該有所幫助。
我的包測試:
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
什麼是數據庫字符集和國家字符集? –
[當我們在plsql中編譯時如何避免Σ轉爲S?](http://stackoverflow.com/questions/27519203/how-to-avoid-%ce%a3-turning-to-s-when -we-compile-in-plsql) – user272735
@JustinCave nls_characterset = WE8MSWIN1252 and nls_nchar_characterset = AL16UTF16 – arminrock