Как выбрать статическую строку в запросе SQL и убедиться, что ее тип VARCHAR2? - PullRequest
2 голосов
/ 28 сентября 2010

У меня есть запрос, который выполняется в удаленной базе данных:

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?

Ответы [ 2 ]

3 голосов
/ 28 сентября 2010

Не уверен, но я заметил, что запрос выбирает «mt.id» из удаленной таблицы, но псевдоним удаленной таблицы - «rd».

Попробуйте выполнить следующее:

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

Надеюсь, это поможет.

2 голосов
/ 29 сентября 2010

Я подозреваю, что ошибка не имеет ничего общего с большими объектами, и я подозреваю, что вы правы, что это ошибка Oracle.Попробуйте обходной путь (т. Е. Замените синтаксис ANSI более старым синтаксисом Oracle), и, если он сработает, вам, вероятно, придется мириться с этим, пока вы не обновите базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...