如何在SQL查询中选择静态字符串并确保其类型为VARCHAR2?

时间:2010-09-27 21:10:13

标签: sql oracle plsql

我有一个在远程数据库上执行的查询:

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中的每一列都是INTEGERVARCHAR2

如果删除'test' as tst没有问题,那么静态字符串'test'似乎被格式化为CLOB而不是VARCHAR2我认为它会

我是否需要将其转换为VARCHAR2?这看起来很奇怪...有没有更好的方法在查询中创建静态返回字符串,以确保它们是VARCHAR2

2 个答案:

答案 0 :(得分:3)

不确定,但我注意到查询从远程表中选择“mt.id”,但远程表的别名是“rd”。

尝试以下方法:

select /*+ DRIVING_SITE(rd) */ 'test' as tst, rd.id from mytable@remotedb rd

我希望这会有所帮助。

答案 1 :(得分:2)

我怀疑这个错误与LOB无关,我怀疑你是对的,这是一个Oracle错误。尝试使用变通方法(即用旧的Oracle语法替换ANSI语法),如果它有效,那么在升级数据库之前,这可能是你必须忍受的。