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请指定,我不明白您的意思