1

我有一个用户定义的数据类型CRM_IDS

create or replace TYPE CRM_IDS AS VARRAY(10) OF VARCHAR(32);

在我的表中purecov_summary,列的数据类型NAV_CRM_IDCRM_IDS

CREATE TABLE "PE_REG"."PURECOV_SUMMARY"
(
    ...
    "NAV_CRM_ID" "PE_REG"."CRM_IDS" ,
    ...
)

当我选择第一行的 nav_crm_id 时:

select nav_crm_id 
from purecov_summary 
where rownum = 1

我能得到"PE_REG.CRM_IDS('10035005')"

但是当我运行时:

select * 
from purecov_summary 
where nav_crm_id = PE_REG.CRM_IDS('10035005')

我收到此错误:

ORA-00932:不一致的数据类型:预期 - 得到 PE_REG.CRM_IDS
00932。00000 -“不一致的数据类型:预期 %s 得到 %s”
*原因:
*操作:
行错误:1 列:37

如何选择PE_REG.CRM_IDS类型?

4

1 回答 1

2

诀窍是在关键字 as中使用嵌套的可变数组列 ( nav_crm_id) 。因此,请考虑以下其中一项:tabletable(nav_crm_id)

select p.* 
  from purecov_summary p 
 where exists (select column_value from table(p.nav_crm_id) where column_value = '10035005') 

或者

select p.*
  from purecov_summary p
  join table(p.nav_crm_id) c
    on c.column_value = '10035005';

Demo

于 2019-11-29T08:49:24.510 回答