Страницы

Поиск по вопросам

понедельник, 15 октября 2018 г.

Приведение записи из выборки к пользовательскому типу и обращение к столбцу

Нужно привести 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

Комментариев нет:

Отправить комментарий