oracle中的Unicode消息raise_application_error

时间:2016-05-23 12:35:13

标签: java oracle unicode

我正在我的数据库中使用 启用全球化支持 我已将字符集迁移到UTF(AL16UTF16) 迁移后,我可以将Unicode字符从Java传递到Oracle并存储在表的NVARCHAR2列中。我也可以从DB检索并传递给Java。

但是,如果我使用Unicode数据执行 raise_application_error 。它将错误消息发送到java,如下所示

; nested exception is java.sql.SQLException: ORA-20001: ¿¿¿ ¿¿¿¿¿¿¿¿¿

谁能告诉我什么错了?以及如何在java中获取Unicode错误消息?

提前致谢。

1 个答案:

答案 0 :(得分:0)

问题是我使用以下步骤完成了字符集迁移,但它对我不起作用。

1.备份数据库。
2.运行CSSCAN命令。
3.使用RESTRICT模式重新启动DB 4.Run CSALTER脚本。
5.重新启动数据库。

之后我尝试使用以下步骤。

1.使用expdp命令备份数据库。
2.创建具有所需字符集(Unicode AL32UTF8)的新数据库 3.将备份转储文件导入新创建的数据库。

这就是全部。它有效!

现在我不需要使用NVARCHAR2数据类型来存储unicode数据(VARCHAR2本身存储Unicode)。 raise_application_error 也可以正常工作(将带有Unicode数据的错误消息发送给Java)。

感谢。