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

Откуда: Ахметов Сити; Санкт Харьков; Донецк (Киев);
Сообщений: 466
Добрый день!

Наткнулся вот на такое:

create or replace TYPE  tt as object (id number, txt varchar2(40));
/

set serveroutput on;
declare
-- type tt is record (id number, txt varchar2(40));
 type mass is table of tt;
 mas mass;
 rec tt;
 cr sys_refcursor;
begin
  open cr for select 1 id, 'asd' txt from dual;
  loop
  fetch cr into rec;
    --dbms_output.put_line(rec.id||'.'||rec.txt);
  exit when cr%notfound;
  end loop;
end;
/

ORA-06504: PL/SQL: Return types of Result Set variables or query do not match
ORA-06512: at line 10
06504. 00000 -  "PL/SQL: Return types of Result Set variables or query do not match"
*Cause:    Number and/or types of columns in a query does not match declared
           return type of a result set  variable, or declared types of two Result
           Set variables do not match.
*Action:   Change the program statement or declaration. Verify what query the variable
           actually refers to during execution.



А вот так уже все работает:
set serveroutput on;
declare
 type tt is record (id number, txt varchar2(40));
 type mass is table of tt;
 mas mass;
 rec tt;
 cr sys_refcursor;
begin
  open cr for select 1 id, 'asd' txt from dual;
  loop
  fetch cr into rec;
    --dbms_output.put_line(rec.id||'.'||rec.txt);
  exit when cr%notfound;
  end loop;
end;
/


"Тысяча чертей!"(с)

В доке не нашел ограничений на такое использование глобально определенных типов.
Получается нельзя зафетчить в подобную переменную?
8 июл 14, 11:39    [16274005]     Ответить | Цитировать Сообщить модератору
 Re: fetch into object type  [new]
уувуукукуку
Guest
huliGUN,

Разницу между object и record чуешь?
8 июл 14, 12:05    [16274207]     Ответить | Цитировать Сообщить модератору
 Re: fetch into object type  [new]
huliGUN
Member

Откуда: Ахметов Сити; Санкт Харьков; Донецк (Киев);
Сообщений: 466
уувуукукуку,

а то, но де сказано шо так низя?
8 июл 14, 12:13    [16274273]     Ответить | Цитировать Сообщить модератору
 Re: fetch into object type  [new]
j2k
Member

Откуда: Новосибирск
Сообщений: 550
huliGUN
уувуукукуку,

а то

все-таки не чувствуете...
8 июл 14, 12:15    [16274294]     Ответить | Цитировать Сообщить модератору
 Re: fetch into object type  [new]
huliGUN
Member

Откуда: Ахметов Сити; Санкт Харьков; Донецк (Киев);
Сообщений: 466
j2k,

хм... начинаю сомневаться...
просветите.
8 июл 14, 12:22    [16274361]     Ответить | Цитировать Сообщить модератору
 Re: fetch into object type  [new]
j2k
Member

Откуда: Новосибирск
Сообщений: 550
huliGUN,
конструктор
8 июл 14, 12:26    [16274391]     Ответить | Цитировать Сообщить модератору
 Re: fetch into object type  [new]
уувуукукуку
Guest
j2k
huliGUN,
конструктор


Не нужен тут конструктор ))))
Просто в объект нужно класть ......... объект! та-таммммм
8 июл 14, 12:31    [16274416]     Ответить | Цитировать Сообщить модератору
 Re: fetch into object type  [new]
huliGUN
Member

Откуда: Ахметов Сити; Санкт Харьков; Донецк (Киев);
Сообщений: 466
j2k,

краткость сестра таланта ))
8 июл 14, 12:35    [16274442]     Ответить | Цитировать Сообщить модератору
 Re: fetch into object type  [new]
huliGUN
Member

Откуда: Ахметов Сити; Санкт Харьков; Донецк (Киев);
Сообщений: 466
уувуукукуку
j2k
huliGUN,
конструктор


Не нужен тут конструктор ))))
Просто в объект нужно класть ......... объект! та-таммммм


Вот я как то видать по глупости подумал, что Oracle поймет, что у него объект представляет из себя набор атрибутов и осилит данную операцию с возможным неявным преобразованием.
А оказалось что нет. Надо его преобразовывать явно.
8 июл 14, 12:42    [16274493]     Ответить | Цитировать Сообщить модератору
 Re: fetch into object type  [new]
уувуукукуку
Guest
huliGUN
Надо его преобразовывать явно.

Молодец.
Заодно и exit when cr%notfound; поставь сразу после fetch
8 июл 14, 12:47    [16274537]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить