oracle – 包规范中的NVARCHAR2常量

前端之家收集整理的这篇文章主要介绍了oracle – 包规范中的NVARCHAR2常量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试使用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   | 
+----+------------------------+-------------+

结果如下,在带有字符集AL32UTF8变量的DB上正确显示,在charset 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相关文章