выполнить хранимую процедуру Oracle из SQL Server 2012 - PullRequest
0 голосов
/ 30 октября 2018

Я изменил имена переменных, чтобы защитить клиента.

Я пытаюсь выполнить хранимую процедуру из удаленной базы данных Oracle 12c, из моей базы данных SQL Server 2012. Если это помогает, процедура базы данных Oracle pl / SQL имеет входные типы данных: INPUT1 = CHAR (200), INPUT2 = (NUMBER), OUTPUT = SYS_REFCURSOR

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

"Поставщик OLE DB" OraOLEDB.Oracle "для связанного сервера" testsrv1 "вернул сообщение" Многошаговая операция OLE DB вызвала ошибки. Проверьте каждое значение состояния OLE DB, если оно доступно. Никакой работы сделано не было. ""

Мой запрос найден ниже:

DECLARE @outputParameter int
DECLARE @inputParameter varchar(400)
DECLARE @inputParameter1 varchar(400)

set @inputParameter1 = 'SampleStringValue'
set @inputparameter = SampleNumberValue

EXEC ('BEGIN storedProcedure(?,?); END;', @inputParameter, @inputParameter1, @outputParameter OUTPUT) at testsrv1

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Вы можете использовать SSIS и Назначение потоковой передачи данных SSIS для подключения к Oracle в SSIS и использования вывода пакета SSIS в запросе SQL.

В SSIS вы можете использовать соединители OleDB, ODBC, ADO.NET для Oracle или сценарий .NET для подключения к Oracle.

0 голосов
/ 31 октября 2018

После многих часов исследований я обнаружил, что вы не можете вернуть тип данных SYS_REF_CURSOR по ссылке в базе данных. Даже из базы данных Oracle в другую базу данных Oracle.

https://asktom.oracle.com/pls/apex/asktom.search?tag=returning-result-set-from-stored-procedure-over-a-database-link

Если база данных Oracle A является базой данных, производящей SYS_REF_CURSOR, а база данных B является потребителем - единственный способ, который я нашел в Интернете, - это извлечь данные из базы данных A и сохранить их в таблице, а затем передать таблицу по ссылке базы данных. .

Это действительно единственный способ сделать это? Я немного новичок в оракуле, но это похоже на то, что должно быть в состоянии сделать сейчас. Ссылка сверху от 10+ лет назад.

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