Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как взять Ораклом данные из MS функции  [new]
eldorado
Member

Откуда: Москва
Сообщений: 20
на Oracle использую LINK-сервер для доступа к MS SQL
SELECT из таблицы берется и все джойнится
как взять SELECT из функции
на конструкцию
SELECT * FROM "dbo.my_function()"@my_link
ругается... говорит нет такого объекта
хотя на MS SQL
SELECT * FROM dbo.my_function()
выполняется
26 май 03, 17:53    [210396]     Ответить | Цитировать Сообщить модератору
 Re: как взять Ораклом данные из MS функции  [new]
Garya
Member

Откуда: Москва
Сообщений: 31857
Блог
А у учетной записи, с которой Оракл обращается к MS SQL, есть права на SELECT?
26 май 03, 18:56    [210495]     Ответить | Цитировать Сообщить модератору
 Re: как взять Ораклом данные из MS функции  [new]
eldorado
Member

Откуда: Москва
Сообщений: 20
обращаюсь SA
и SELECT из таблицы той же БД MS SQL и того же владельца (dbo) работает
26 май 03, 19:00    [210503]     Ответить | Цитировать Сообщить модератору
 Re: как взять Ораклом данные из MS функции  [new]
Garya
Member

Откуда: Москва
Сообщений: 31857
Блог
Я Оракла не знаю. Но сильно подозреваю, что ты к функции неправильно обращаешься. Функции в MS SQL Server есть двух типов: а) возвращающие скалярные значения; б) возвращающие наборы записей. Судя по всему, твоя функция возвращает набор записей. Следовательно, к ней нужно обращаться из Оракла как к внешней ТАБЛИЦЕ. То есть, что-то вроде (пардон, синтаксиса четко не знаю):
select * from "select * from dbo.MyFunc()"@my_link
26 май 03, 19:30    [210534]     Ответить | Цитировать Сообщить модератору
 Re: как взять Ораклом данные из MS функции  [new]
eldorado
Member

Откуда: Москва
Сообщений: 20
2 Garya:

пробовала и так, ты привел формат как MS SQL обратился бы к внешнему источнику через драйвер, например ODBC ORACLE, и тут все очень красиво и правильно - через ODBC прогнали сам запрос в кавычках... и т.д.
но к сожалению в ORACLE такое не прокатывает - я не уверена что подход с LINK-сервером верный

скажу сразу пробовалось следующее:

SELECT * from dbo.my_function()@ttt;
SELECT * from "dbo.my_function"()@ttt;
SELECT * from "dbo.my_function"@ttt();
SELECT * from dbo.my_function@ttt();


и в самом ORACLE к функции обращаются так
SELECT * FROM TABLE(CAST(my_function(...) as my_type_table))
и соответственно я пробую :
SELECT * from TABLE(CAST(dbo.my_function()@ttt as MYTABLETYPE));
SELECT * from TABLE(CAST("dbo.my_function()"@ttt as MYTABLETYPE));
SELECT * from TABLE(CAST(dbo.my_function() as MYTABLETYPE))@ttt;

...шаманство
26 май 03, 19:36    [210542]     Ответить | Цитировать Сообщить модератору
 Re: как взять Ораклом данные из MS функции  [new]
andsm
Member

Откуда: Москва
Сообщений: 1319
Блог
Посмотри в Oracle пакетs dbms_hs и (вроде так называется) dbms_hs_passthrough. Там такие возможности есть.
26 май 03, 19:42    [210549]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить