Можно ли определить 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-ом и не пахнет, в вашем примере
хотя тема так называется