Проблема Openquery для SQL Server: ORA-00920: недопустимый реляционный оператор - PullRequest
0 голосов
/ 26 января 2019
DECLARE @text AS VARCHAR(10) = '//text()'
DECLARE @TSQL VARCHAR(8000)

SET @TSQL = 'select * from openquery(HHOBI,''select rtrim(xmlagg(xmlelement(e,id,'''','''').extract('''''+@text+''''') order by id).GetClobVal(),'''','''') from (select level as id from dual
connect by level)'')'

EXEC(@TSQL)

Я получаю сообщение об ошибке:

Поставщик OLE DB "OraOLEDB.Oracle" для связанного сервера "HHOBI" вернул сообщение "ORA-00920: недопустимый реляционный оператор

1 Ответ

0 голосов
/ 26 января 2019

Oracle требует запрос вида:

select level as id from dual
connect by <BOOLEAN EXPRESSION HERE>

Вы передали INT в место, где он ожидает логическое значение

Попробуйте что-нибудь вот так :

select level as id from dual
connect by level <= 100

Если вы хотите, чтобы oracle генерировал вам 100 произвольных строк (один столбец, считая от 1 до 100)

Очевидно, я не могу угадать, сколько строк вам нужно, чтобы оракул создавался, чтобы использовать их для разрыва вашего XML-документа; это вам решать и прикончить

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