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

Откуда: Алматы
Сообщений: 53
Здравствуйте, уважаемые форумчане.
На Oracle 9.2.0.7.0 есть пакет:
create or replace package zbw_tools
as

TYPE val_status IS RECORD (status number(1), vdate date, v_code varchar2(3), v_rate number(8,2));
TYPE tbl_val_status IS TABLE OF val_status;
FUNCTION GetODstatValRates(c_date date) RETURN tbl_val_status;

end;
Не поджскажите, почему так все работает нормально:
declare
t zbw_tools.tbl_val_status;
begin
t:= zbw_tools.GetODstatValRates(sysdate);
if t.count=1 then
   dbms_output.put_line(t(1).vdate||' '||t(1).status);
end if;
if t.count>1 then
for count_dep in 1..t.count
    loop
          dbms_output.put_line(t(count_dep).vdate||' '||t(count_dep).status||' '||t(count_dep).v_code||' '||t(count_dep).v_rate);
    end loop;
end if;
end;
А так выдает ошибку "ORA-00902: invalid datatype":
select t.* from table(cast(zbw_tools.GetODstatValRates(trunc(sysdate-1)) as zbw_tools.tbl_val_status)) t
Мне очень нужен именно второй вариант, чтобы встроить функцию во внешний сложный запрос.
21 май 09, 07:56    [7207067]     Ответить | Цитировать Сообщить модератору
 Re: запрос данных из функции  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18487
В 9.2.0.7 эти типы тебе надо объявить не в PL/SQL пакете, а в SQL (с помощью оператора CREATE TYPE)
21 май 09, 08:00    [7207069]     Ответить | Цитировать Сообщить модератору
 Re: запрос данных из функции  [new]
aldon
Member

Откуда: Алматы
Сообщений: 53
Вячеслав Любомудров,
спасибо за ответ. А в пакете, с какой версии можно?
21 май 09, 08:08    [7207077]     Ответить | Цитировать Сообщить модератору
 Re: запрос данных из функции  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
aldon
А в пакете, с какой версии можно?
Если речь не про pipelined-то ни с какой, вроде.
Для pipelined-функций - 10ка умеет создавать втихоря глобальный тип для соответствующего пакетного типа, но Вы потом можете получить гемор с такими SYS_* типами (по форуму как-то проходило)?
21 май 09, 11:48    [7208335]     Ответить | Цитировать Сообщить модератору
 Re: запрос данных из функции  [new]
ZVV
Member

Откуда: Минск
Сообщений: 744
Вячеслав Любомудров
В 9.2.0.7 эти типы тебе надо объявить не в PL/SQL пакете, а в SQL (с помощью оператора CREATE TYPE)


А вы точно ничего не путаете? А в следующих по вашему можно?
Я вот специально проверит на 10Р2 - тоже нельзя. ;)
21 май 09, 11:51    [7208361]     Ответить | Цитировать Сообщить модератору
 Re: запрос данных из функции  [new]
Elic
Member

Откуда:
Сообщений: 29991
ZVV
Вячеслав Любомудров
В 9.2.0.7 эти типы тебе надо объявить не в PL/SQL пакете, а в SQL (с помощью оператора CREATE TYPE)
А вы точно ничего не путаете? А в следующих по вашему можно?
Я вот специально проверит на 10Р2 - тоже нельзя. ;)
STFF SELECT курсора FROM таблицы "IS TABLE OF" ?
Более того, можно в любом 9.2.0.x: STFF Передача (или получение) массива процедуре
21 май 09, 13:13    [7209080]     Ответить | Цитировать Сообщить модератору
 Re: запрос данных из функции  [new]
ZVV
Member

Откуда: Минск
Сообщений: 744
Elic
ZVV
Вячеслав Любомудров
В 9.2.0.7 эти типы тебе надо объявить не в PL/SQL пакете, а в SQL (с помощью оператора CREATE TYPE)
А вы точно ничего не путаете? А в следующих по вашему можно?
Я вот специально проверит на 10Р2 - тоже нельзя. ;)
STFF SELECT курсора FROM таблицы "IS TABLE OF" ?
Более того, можно в любом 9.2.0.x: STFF Передача (или получение) массива процедуре


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

про pipelined и create type, и NDS я в курсе...
21 май 09, 14:26    [7209786]     Ответить | Цитировать Сообщить модератору
 Re: запрос данных из функции  [new]
Elic
Member

Откуда:
Сообщений: 29991
ZVV
интересные конечно ссылки, только к чему они?
моё сообщение сугубо касалось примера в первом посте и была ответом на заявление, что он будет работать после 9-ки, не более того.
А ведь действительно :) Согласен с Jannny и с тобой.
21 май 09, 14:40    [7209923]     Ответить | Цитировать Сообщить модератору
 Re: запрос данных из функции  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18487
ZVV
Вячеслав Любомудров
В 9.2.0.7 эти типы тебе надо объявить не в PL/SQL пакете, а в SQL (с помощью оператора CREATE TYPE)


А вы точно ничего не путаете?
Естественно, попутал с pipelined
Впрочем, меня сразу поправили
22 май 09, 05:29    [7213215]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить