Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Функция-record


Автор: setnull 5.3.2009, 17:09
Все здравствуйте!

Вопрос. 
Есть функция, возвращающая RECORD. Как ее запросить из явы, чтоб вернулся набор данных, состоящий из одной строки?

Спасибо!

Автор: v2v 5.3.2009, 23:20
Написать обёрточную функцию , которая принимает Тип RECORD и преобразует в строку.

Автор: setnull 6.3.2009, 09:25
Спасибо. Была такая идея.
Не катит.
Таких функций очень много.


Я имею ввиду как-то в запросе преобразовать можно, как PIPELINED?
как-то так
Код

select * from ROW(my_func());


Автор: Deniel_li 6.3.2009, 12:40
можно или через объектные типы или при помощи ref cursor

Автор: Deniel_li 6.3.2009, 13:21
что-то вроде


create type numset_t as table of number;
/

create function f1(x number) return numset_t pipelined is
begin
for i in 1..x loop
pipe row(i);
end loop;
return;
end;
/
-- pipelined function in from clause
select * from table(f1(3));


Автор: setnull 11.3.2009, 10:26
Так сдесь же не запись возвращается, а PIPELINED....
а я имел ввиду каким образом результат РЕКОРДОВЫЙ представить в виде PIPELINED (с одной строкой)?...

Ладно.... а как из явы запросить результат РЕКОРДОВОЙ функции?
Код

type my_type is record(
.......
....
);

function my_func
rerturn my_type;


Можно ее как-нить в HashMap, скажем, отобразиьт?

Автор: LSD 11.3.2009, 12:00
Цитата(setnull @  11.3.2009,  10:26 Найти цитируемый пост)
Ладно.... а как из явы запросить результат РЕКОРДОВОЙ функции?

Никак. Тип RECORD не имеет представления в JDBC.

Автор: VOS 12.3.2009, 16:58
Попробуйте так smile
 
select  my_func(param) from dual

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)