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

Откуда:
Сообщений: 135
Здравствуйте.

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

create or replace function Get_Acc_Def_Bal( Acc_def_list in varchar2)
return varchar2
is
  TYPE List_ACC IS VARRAY(100) OF VARCHAR2(100);  
  list_acc1 list_acc := list_acc();
  sum_ number;
  s varchar2(100);
  s1 varchar2(100);
  ik integer;
  t integer;
BEGIN
--тут разные манипуляции для того, чтобы собрать list_acc1 
  SELECT  sum(getbalanceatdate (led.id, trunc(sysdate)) * banksyst.getrate (led.currency_id, trunc(sysdate))) into sum_
  FROM ssd.accdata led
  WHERE substr(cast(led.account_id as varchar2(20)), 1, 4) in (select column_value from table(cast(list_acc1 as list_acc)));
  return(sum_);  
END;

однако в этой части выдается ошибка:
(select column_value from table(cast(list_acc1 as list_acc)));


PL/SQL: ORA-00902: invalid datatype

В чем может быть ошибка?
29 сен 10, 17:38    [9525187]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка с VARRAY  [new]
GL
Member

Откуда: Харьков
Сообщений: 1513
fd979,

Тип List_ACC должен быть SQL'ным (CREATE TYPE List_ACC ...);.
29 сен 10, 17:40    [9525210]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка с VARRAY  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
fd979
В чем может быть ошибка?


Для того, чтобы работать с коллекциями в SQL запросах, их типы долны быть определены глобально в SQL:

CREATE TYPE ... IS ...
/
29 сен 10, 17:41    [9525223]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка с VARRAY  [new]
fd979
Member

Откуда:
Сообщений: 135
все верно.

Спасибо братцы. Вопрос снят.
29 сен 10, 17:44    [9525260]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить