我正在我的数据库中使用 启用全球化支持 我已将字符集迁移到UTF(AL16UTF16) 迁移后,我可以将Unicode字符从Java传递到Oracle并存储在表的NVARCHAR2列中。我也可以从DB检索并传递给Java。
但是,如果我使用Unicode数据执行 raise_application_error 。它将错误消息发送到java,如下所示
; nested exception is java.sql.SQLException: ORA-20001: ¿¿¿ ¿¿¿¿¿¿¿¿¿
谁能告诉我什么错了?以及如何在java中获取Unicode错误消息?
提前致谢。
答案 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)。
感谢。