我有一个在远程数据库上执行的查询:
select /*+ DRIVING_SITE(rd) */ 'test' as tst, rd.id from mytable@remotedb rd
当我执行此查询时,我得到:
ORA-22992: cannot use LOB locators selected from remote tables
mytable@remotedb
中的每一列都是INTEGER
或VARCHAR2
。
如果删除'test' as tst
没有问题,那么静态字符串'test'
似乎被格式化为CLOB
而不是VARCHAR2
我认为它会
我是否需要将其转换为VARCHAR2
?这看起来很奇怪...有没有更好的方法在查询中创建静态返回字符串,以确保它们是VARCHAR2
?
答案 0 :(得分:3)
不确定,但我注意到查询从远程表中选择“mt.id”,但远程表的别名是“rd”。
尝试以下方法:
select /*+ DRIVING_SITE(rd) */ 'test' as tst, rd.id from mytable@remotedb rd
我希望这会有所帮助。
答案 1 :(得分:2)
我怀疑这个错误与LOB无关,我怀疑你是对的,这是一个Oracle错误。尝试使用变通方法(即用旧的Oracle语法替换ANSI语法),如果它有效,那么在升级数据库之前,这可能是你必须忍受的。