我有一个用户定义的数据类型CRM_IDS
:
create or replace TYPE CRM_IDS AS VARRAY(10) OF VARCHAR(32);
在我的表purecov_summary
中,列NAV_CRM_ID
的数据类型为CRM_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
类型?
答案 0 :(得分:2)
技巧是将nav_crm_id
关键字内的嵌套varray列(table
)用作table(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';