Я работаю с типами Oracle 12c.
Допустим, у меня есть тип с именем TY.
TY
Я хотел бы сделать этот запрос:
select ref(TY(p1,p2,...,pn)) from dual;
Работает без ref(...).
ref(...)
Есть ли способ добиться этого?
В документации Oracle говорится об REF :
REF содержит следующие три логических компонента: OID объектаобъект ссылается.Сгенерированный системой OID имеет длину 16 байтов.Размер OID на основе первичного ключа зависит от размера столбцов первичного ключа. OID таблицы или представления, содержащего объект, на который ссылаются, длиной 16 байтов. подсказка Rowid длиной 10 байт.
REF содержит следующие три логических компонента:
OID объектаобъект ссылается.Сгенерированный системой OID имеет длину 16 байтов.Размер OID на основе первичного ключа зависит от размера столбцов первичного ключа.
OID таблицы или представления, содержащего объект, на который ссылаются, длиной 16 байтов.
подсказка Rowid длиной 10 байт.
Это все локационные атрибуты.Они однозначно идентифицируют экземпляр объекта в объектно-реляционной таблице.Ваш запрос не выполнен, потому что вы пытаетесь сослаться на временный объект.
Значение REF в том, что они позволяют нам ссылаться на существующий объект, поэтому мы можем перемещаться по иерархиям объектов, применять ограничения и т. Д. То, что вы пытаетесь сделать, не подходит для этого использования.