Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];

Вниз

ora sys_refcursor (11g)   Найти похожие ветки 

 
кгшзх ©   (2015-12-16 08:48) [0]

функция возвращает рефкурсор, построенный по произвольному выражению, переданному параметром.
каким макаром написать select из него чтобы сразу получился рекордсет?

в девелопере:
select myfunc(.......) from dual => вижу одну строку выборки с одним полем (сам курсор)

если тыцнуть в ячейку курсора, то девелопер развертывает курсор в нормальный рекордсет.

how?


 
Limpo ©   (2015-12-16 08:56) [1]

Удалено модератором


 
Кщд ©   (2015-12-16 13:15) [2]

код myfunc?


 
Кщд ©   (2015-12-16 13:18) [3]

ах, 11g...
тогда - всё просто: dbms_sql.describe_columns


 
кгшзх ©   (2015-12-16 17:28) [4]

проблема не в том, что мне неизвестны поля курсора.
они мне известны еще до его открытия.
проблема в том, что мне некуда его фетчить так как нету sometable%rowtype

а нету его потому, что сама таблица живет на другом сервере, причем не обязательно оракловом.

схематично:
получил я clob через utl_http
внутри xml с выборкой на стороннем сервере
пробегаюсь по первой строке, получаю список полей и попутно склеиваю sql для селекта из этого xml.

дальше делаю open mycur for mydynsql using :myxmltypefromclob

открылося.
дальше можно было бы зафетчить и сделать функцию как piplined и получить выборку.

но некуда делать into

так как функция должна быть одна (ну типа библиотечная) а юзают ее прикладные программисты.


 
Кщд ©   (2015-12-17 09:46) [5]

задача в чем? кто и где должен видеть выборку?


 
кгшзх ©   (2015-12-17 11:09) [6]

в опчем есть некий движок для распределенного доступа к разнородным источникам данных.
доступ к нему (сейчас) возможен из самых различных клиентских сред vbs, office-vba, js в браузере, win32 приложения, etc ...

и значитсо пишется клиентский пакет для доступа из plsql. транспорт уже работает.

остановился на этапе:
выполнился указанный мной sqlзапрос на postgresql (ну например на нем)
пришел clob с выборкой (внутри лежит xml)
я разобрал что там внутри и сформировал sql для xml (select value(t).extract("./row/@f1").getstringval() as f1 ........)
сделал ему open for ... using XMLType(MyClob)

дальше хотелось бы развернуть его в датасет, чтобы конечный разраб мог использовать функцию в своих объединениях.

пока же ему приходится определять конкретный рекорд для фетча конкретного своего запроса и скроллить.

а в объединениях оно пока недоступно


 
Кщд ©   (2015-12-17 11:48) [7]

>кгшзх ©   (17.12.15 11:09) [6]
т.е. речь о том, что нужно вернуть на клиента
тогда отдавать
1. либо курсор + список полей из него (полученных через dbms_sql)
2. либо тот же XML определенного вида (позволяющий на клиенте сформировать "recordset")

и в том, и в другом случае "recordset" формирует клиент


 
кгшзх ©   (2015-12-17 12:54) [8]

на клиента как раз ничего передавать не надо.
на клиенте есть свои средства доступа к этому двиглу

речь идет о том, чтобы разраб plsql кода пользовался двиглом внутри сервера.


 
Кщд ©   (2015-12-17 13:27) [9]

серебряной пули нет
Oracle не умеет отдавать "recordset" с произвольным кол-вом полей
оба пункта из "Кщд ©   (17.12.15 11:48) [7]" могут быть использованы в хранимом pl/sql-коде



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.044 c
15-1456958945
Kerk
2016-03-03 01:49
2017.01.15
Мотивация людей


8-1238746691
igor666
2009-04-03 12:18
2017.01.15
Карта города.


1-1345382325
abolnykh
2012-08-19 17:18
2017.01.15
Импорт объекта из dll


15-1456992174
Pavia
2016-03-03 11:02
2017.01.15
Сертификация ПО и патентные исследования


2-1424539948
Fox
2015-02-21 20:32
2017.01.15
Интернет ТВ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский