在Oracle中使用不同的字符集访问数据库链接上的函数

时间:2009-06-25 10:33:47

标签: oracle character-encoding

我在DatabaseA中有一个函数,我想在DatabaseB中访问,所以我在DatabaseB中创建了一个DB链接并开始访问该函数

SELECT function_name@dblink ('A0484')  FROM DUAL;

执行此操作会导致以下错误

ERROR at line 1:
ORA-12703: this character set conversion is not supported
ORA-06512: at line 1

在挖掘时,我发现了数据库的以下信息

DatabaseA:
   Version-8i
   Charset-US7ASCII

DatabaseB:
   Version-10g
   Charset-AL32UTF8

从DatabaseB直接访问DatabaseA中的任何表,通过DBLink工作罚款,它只是返回此错误的函数。

该功能具有类似于下面的签名

CREATE OR REPLACE FUNCTION TestFunc(p_Number IN VARCHAR2) RETURN VARCHAR2 IS
BEGIN
     RETURN 'Some Data';
END;

任何可能导致转换错误的想法以及可以采取哪些措施来避免错误,因为直接访问表似乎工作正常。

1 个答案:

答案 0 :(得分:2)

这是一个已知的Oracle错误 - 如果您可以访问Metalink,请参阅注释237593.1。建议的解决方案是当9i客户端连接到它时,为10g数据库使用UTF8字符集(在这种情况下,请记住8i数据库是10g数据库的“客户端”)。或者,有一个可能有效的8i补丁。