Можно ли определить TYPE на основе курсора

Заятс
Дата: 13.12.2012 13:10:54
Собственно вопрос в sybj
Сергей Арсеньев
Дата: 13.12.2012 13:11:45
Заятс,

Тип чего собственно?
Vint
Дата: 13.12.2012 13:47:47
Заятс,
ответ в общем положительный. и прочитать можно в документации.
MazoHist
Дата: 13.12.2012 13:48:16
С явным курсором - можно, с неявным - не нужно, с ref cursor - нельзя.
declare 
 cursor c is select * from dual;
 rc c%rowtype;
begin
 open c;
 loop
  fetch c into rc;
  exit when c%notfound;
  dbms_output.put_line(rc.dummy);
 end loop;
end;
Заятс
Дата: 13.12.2012 13:51:04
Например:
TYPE t_rec IS RECORD(
currency CHAR(3),
amount NUMBER(18,2)
);
Поля этих типов у меня возвращает курсор. Вместо явного задания типов полей, хотелось бы определить t_rec через курсор, чтобы при изменении типов полей в курсоре и/или добавлении новых полей автоматом изменялся и TYPE t_rec
123йй
Дата: 13.12.2012 13:55:54
Заятс,
не с той стороны копаете
ww123
Дата: 13.12.2012 14:44:19
Заятс,

Нужно определить type как object и объявить на уровне схемы.
Сергей Арсеньев
Дата: 13.12.2012 14:52:54
Заятс,

Экий велосипед.

Но в принципе можно, но переопределению типа могут мешать использующие его объекты.
Заятс
Дата: 13.12.2012 14:59:20
Докопал, на самом деле мне в конечном итоге необходимо было: TYPE tt_rec IS TABLE OF t_rec
Делается это так:
        CURSOR acc_balance
        IS
            SELECT currency, amount ...;

        TYPE tt_rec IS TABLE OF acc_balance%RowType INDEX BY BINARY_INTEGER;

Т.е. промежуточного TYPE t_rec не потребовалось
--Eugene--
Дата: 13.12.2012 15:03:36
но тут REFCURSOR-ом и не пахнет, в вашем примере
хотя тема так называется