例として次のクエリを使用します。
select p.product_id, p.product_name,
product_type as product_type,
from products
group by p.product_id, p.product_name
union
select p.product_id, p.product_name,
cast(collect(coalesce(product_type, decode(product_description,null,'DESCR' || '-' product_description) as my_type) as product_type,
from products
group by p.product_id, p.product_name
最初のクエリの select ステートメントは product_type を varchar として返し、2 番目のクエリの product_type は my_type 型です。これにより、ORA-01790: データ型が同じでないため、式は対応する式と同じデータ型である必要があります。
最初のクエリで product_type を型 my_type にキャストすることは可能ですか?
以下に示すように最初のクエリを変更しようとしましたが、うまくいきませんでした。
select p.product_id, p.product_name,
cast(product_type as my_type) as product_type,
decode(product_source_location, null, 'NO_SOURCE', product_source_location)
from products
group by p.product_id, p.product_name
編集
my_type は次のように定義されます'TYPE "my_type" AS TABLE OF varchar2(4000)'