如何在SQL中匹配用户定义的数据类型
我有一个用户定义的数据类型如何在SQL中匹配用户定义的数据类型,sql,oracle,varray,Sql,Oracle,Varray,我有一个用户定义的数据类型CRM\u id: create or replace TYPE CRM_IDS AS VARRAY(10) OF VARCHAR(32); CREATE TABLE "PE_REG"."PURECOV_SUMMARY" ( ... "NAV_CRM_ID" "PE_REG"."CRM_IDS" , ... ) 在我的表purecov\u summary中,NAV\u CRM\u ID列的数据类型为CRM\u ID: create or re
CRM\u id
:
create or replace TYPE CRM_IDS AS VARRAY(10) OF VARCHAR(32);
CREATE TABLE "PE_REG"."PURECOV_SUMMARY"
(
...
"NAV_CRM_ID" "PE_REG"."CRM_IDS" ,
...
)
在我的表purecov\u summary
中,NAV\u CRM\u ID
列的数据类型为CRM\u ID
:
create or replace TYPE CRM_IDS AS VARRAY(10) OF VARCHAR(32);
CREATE TABLE "PE_REG"."PURECOV_SUMMARY"
(
...
"NAV_CRM_ID" "PE_REG"."CRM_IDS" ,
...
)
当我使用以下命令选择第一行的导航crm\U id时:
select nav_crm_id
from purecov_summary
where rownum = 1
我可以获得“PE\u REG.CRM\u ID('10035005')”
但当我跑步时:
select *
from purecov_summary
where nav_crm_id = PE_REG.CRM_IDS('10035005')
我得到这个错误:
ORA-00932:不一致的数据类型:应为-获得PE_REG.CRM_ID93200000-“不一致的数据类型:应为%s获得%s”
*原因:
*行动:
第1行第37列出现错误
如何使用
PE\u REG.CRM\u id
类型进行选择?诀窍是使用表中的嵌套varray列(nav\u CRM\u id
)关键字作为表(nav\u CRM\u 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';