我尝试使用 nvarchar2
在包规范中添加一个常量数据类型,但编译后它存储在数据库中,例如 ???
.例如,我尝试为亚美尼亚语词 մեկ
添加一个常量。
x constant nvarchar2(3) default 'մեկ';
任何人都可以提出解决这个问题的方法,或者不可能这样做?
最佳答案
我已经在两个不同的数据库上测试了你的例子 NLS_CHARACTERSET
配置。
配置(通过查询接收 -
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
关于oracle - 包规范中的 NVARCHAR2 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27577711/