关于ORACLE字符集的问题

今天加夜班修改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作为参数是没有问题的,其他字符集没有做尝试。

你可能感兴趣的:(oracle)