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

关于ORACLE字符集的问题

2011-03-08 04:46 337 查看
今天加夜班修改bug,在oracle10g中执行函数是没有问题的,但是调用的时候总报错:

 ORA-01460: unimplemented or unreasonable conversion requested  找了半天,在网上说是字符集编码的问题,我通过两个对比两个数据库发现编码是不一样,在另一台服务器上的NLS_CHARACTERSET 为ZHS16GBK ,而另外一台的数据位UTF8。但是为什么使用UTF8报错,还有待研究,今天晚上仅仅是记录下错误。查看ORACLE的 字符集可以使用select * from nls_database_parameters语句。

关于怎么修改数据库字符集问题:集中有用代码如下,在网路上搜的,由于本人没有DBA的权限,所以没有办法修改。

尝试使用以下命令来修改字符集,结果失败了:
shutdown immedaite;
Startup nomount;
Alter database mount exclusive;
Alter system enable restricted session;
Alter system set job_queue_process=0;   --执行这句报错
Alter database open;
Alter database character set ZHS16CGB231280;  --执行这句说只允许修改到超集

 

下面总结下出现这种错误的原因:

1、就是上述的出现的字符集问题;

2、JDK的版本问题;

3、连接ORACLE驱动包的原因。

 

在UTF8字符集的空间中,写函数或者存储过程的参数不能使用NVARCHAR2 而是VARCHAR2,否则即使函数编译能通过,但是使用时会报错。本人只是在UTF8的情况下出现了这个问题,在ZHS16GBK中使用NVARCHAR2作为参数是没有问题的,其他字符集没有做尝试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息