Oracle 包规范中的NVARCHAR2常量

Oracle 包规范中的NVARCHAR2常量,oracle,plsql,Oracle,Plsql,我试图用nvarhar2数据类型在包规范中添加一个常量,但编译后它会存储在数据库中,类似于?。例如,我尝试为亚美尼亚语单词մեկ x constant nvarchar2(3) default 'մեկ'; 有人能为这个问题提出解决方案吗?或者不可能这样做?我已经在两个不同的数据库上使用不同的NLS\U字符集配置测试了您的示例 配置(通过查询接收- select * from v$nls_parameters where parameter in ('NLS_NCHAR_CHARACT

我试图用
nvarhar2
数据类型在包规范中添加一个常量,但编译后它会存储在数据库中,类似于
。例如,我尝试为亚美尼亚语单词
մեկ

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

有人能为这个问题提出解决方案吗?或者不可能这样做?

我已经在两个不同的数据库上使用不同的
NLS\U字符集
配置测试了您的示例

配置(通过查询接收-

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   | 
+----+------------------------+-------------+
结果如下:在带有字符集
AL32UTF8
变量的数据库上,正确显示变量;在带有问题“?”的字符集
CL8MSWIN1251

我没有更改数据库上的字符来验证我的建议。因此,我建议您将
NLS\u字符集
更改为
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

什么是数据库字符集和国家字符集?可能重复@JustinCave nls_characterset=WE8MSWIN1252和nls_nchar_characterset=AL16UTF16您是否验证了编码服务器UTF-8?@user3489875请指定,我不明白您的意思