Нужно привести record из select к пользовательскому типу.
Создан тип:
create or replace type test_rec is object (
name varchar2(10),
id number
)
Сам запрос:
select *
from (SELECT test_rec(ID, NAME)
FROM (select '1' as id, 'Вася' as name
from dual
union all
select '2' as id, 'Маша' as name
from dual))
where id = 2
Возникает ошибка:
ora-00904 "ID" invalid identifier.
Без условия where id = 2 все работает. Можно ли как-то обратится к столбцу после приведения к типу? Желательно без алиасов.
Ответ
Вы селектитке объектный тип, поэтому id у него - поле, а не столбец. Не очень понятно желание "без алиасов", но рабочий вариант выглядит так -
select *
from (SELECT test_rec(NAME, ID) as val
FROM (select 'Вася' as name, 1 as id
from dual
union all
select 'Маша' as name, 2 as id
from dual)) s
where s.val.id = 2
Комментариев нет:
Отправить комментарий