加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle – 包规范中的NVARCHAR2常量

发布时间:2020-12-12 13:14:06 所属栏目:百科 来源:网络整理
导读:我尝试使用nvarchar2数据类型在包规范中添加常量,但在编译之后它在数据库中存储类似于???的内容.例如,我尝试为亚美尼亚语单词???添加常量 x constant nvarchar2(3) default '???'; 任何人都可以建议解决这个问题或者不可能这样做吗? 解决方法 我已经在具有
我尝试使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读