您的位置:首页 > 数据库 > Oracle

oracle的asciistr函数惹祸了(在9i和10g上运行输出结果不一致)

2008-07-11 11:21 316 查看
从oracle9i升级到10g之后,意外地发现ascii函数在9i和10g上输出结果不一致,两个库的字符集设置完全相同,难道跟操作系统平台(9i:9.2.0.7.0安装在solaris操作系统上,10g:10.2.0.3.0安装在AIX操作系统上)有关?是否跟底层的C语言类库有关系?

到metalink、google上搜了一圈没有找到解决方案,在itpub的“oracle高级管理”论坛里发了个贴,没人理,真得是黔驴技穷了。去找Oracle技术人员?

附录A:两个库字符集设置完全相同
字符集配置相同(NLS_CHARACTERSET=ZHS16GBK,NLS_NCHAR_CHARACTERSET=AL16UTF16)

PARAMETERVALUE
NLS_LANGUAGESIMPLIFIEDCHINESE
NLS_TERRITORYCHINA
NLS_CURRENCYRMB
NLS_ISO_CURRENCYCHINA
NLS_NUMERIC_CHARACTERS.,
NLS_CALENDARGREGORIAN
NLS_DATE_FORMATYYYY-MM-DD
NLS_DATE_LANGUAGESIMPLIFIEDCHINESE
NLS_CHARACTERSETZHS16GBK
NLS_SORTBINARY
NLS_TIME_FORMATHH.MI.SSXFFAM
NLS_TIMESTAMP_FORMATDD-MON-RRHH.MI.SSXFFAM
NLS_TIME_TZ_FORMATHH.MI.SSXFFAMTZR
NLS_TIMESTAMP_TZ_FORMATDD-MON-RRHH.MI.SSXFFAMTZR
NLS_DUAL_CURRENCYRMB
NLS_NCHAR_CHARACTERSETAL16UTF16
NLS_COMPBINARY
NLS_LENGTH_SEMANTICSBYTE
NLS_NCHAR_CONV_EXCPFALSE

附录B:两个库上执行,1-255之间的ASCII码表(92和128不相同)
SELECTchr(ROWNUM),asciistr(chr(ROWNUM))
FROMall_tab_cols
WHERE1=1
ANDROWNUM<=256;

SELECTascii(/'€/'),asciistr(/'€/'),ascii(/'//'),asciistr(/'//')FROMdual;
输出结果:
128/FFFD92/--9i输出结果
128/20AC92/005C--10g输出结果


附录C:系统环境

9i系统配置:
主机配置SunMicrosystemssun4uSunFireV890,4cpu*1500MHZ,16G内存,EMC共享存储(Raid10)。
操作系统SunOSjsdbcenter015.10Generic_118822-11sun4usparcSUNW,Sun-Fire-V890
数据库系统Oracle9iEnterpriseEditionRelease9.2.0.7.0-64bitProduction,JSDC

10g系统配置:
AIX操作系统,其它不详
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐