Я создал ссылку на базу данных SQL Server 2012 в Oracle 11gR2, используя Oracle Gateway для SQL Server. Соединение работает нормально, и я могу выполнять запросы и хранимые процедуры с SQL Server.
Проблема возникает, когда я пытаюсь получить столбец XML из SQL Server. В документах Oracle четко указано, что если база данных находится в наборе символов UTF (AL32UTF8), XML поддерживается, но в формате типа данных LONG.
Я могу запросить столбец XML с помощью
SET LONG 5000;
select "XMLColumn" FROM "xmltable"@sqlserver;
но при попытке вставить это в таблицу оракула с типом данных Long выдает следующую ошибку.
SQL Error: ORA-00997: illegal use of LONG datatype
Есть ли обходной путь для этой проблемы.
Я даже попытался преобразовать входящий XML в CLOB, как предложил Сандерс, что совершенно логично. Но почему-то это тоже возвращает ту же ошибку. В приведенном ниже запросе Имя, очевидно, представляет собой столбец XML из SQL Server.
CREATE TABLE TEMPCLOB
AS
SELECT TO_LOB("Name") AS "Name" FROM "xmldata"@sqlserver;