现在我要从一个与当前数据库不同字符集的数据库中查询中文记录,目前找到一种最佳实现方式就是selectf_get_varchar2(UTL_RAW.cast_to_raw@DBLINK_CTAIS_DQY(BTZQY))BTZQYfromctais1.s...
现在我要从一个与当前数据库不同字符集的数据库中查询中文记录,目前找到一种最佳实现方式就是
select f_get_varchar2(UTL_RAW.cast_to_raw@DBLINK_CTAIS_DQY(BTZQY)) BTZQY from ctais1.sb_ndsds_2008_fb11 (此处有一个圈a,就是2上面的字符) dblink_ctais_dqy
调用远程库的cast_to_raw方法,这样我查询出来是正确的,的确能够获得中间码
,但是为什么我
select UTL_RAW.cast_to_varchar2(UTL_RAW.cast_to_raw@DBLINK_CTAIS_DQY(BTZQY)) BTZQY from ctais1.sb_ndsds_2008_fb11 (此处有一个圈a,就是2上面的字符) dblink_ctais_dqy
却不能够查出中文字符呢
当我 create table tmp_aa as
select f_get_varchar2(UTL_RAW.cast_to_raw@DBLINK_CTAIS_DQY(BTZQY)) BTZQY from ctais1.sb_ndsds_2008_fb11 (此处有一个圈a,就是2上面的字符) dblink_ctais_dqy
然后
select UTL_RAW.cast_to_varchar2(BTZQY) BTZQY from ctais1.sb_ndsds_2008_fb11 (此处有一个圈a,就是2上面的字符) dblink_ctais_dqy
这样却又行了,为什么啊,为什么要把结果保存在一张表就行了,而直接处理就不行呢
其中 f_get_varchar2就是返回原始字符,方法体如下
展开