1

例として次のクエリを使用します。

  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)'

4

1 に答える 1