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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |