我有一个Oracle表,它将大量数据存储为CLOB
s中的XML。例如,它将状态整数映射到自定义状态名称。下面是一些简单的XML:创建Oracle XML视图
<metadata>
<states>
<state status="0" label="New" />
<state status="1" label="Data-Entry" />
<state status="25" label="Approve-Data" />
</states>
</metadata>
我写了一个查询,提取说,从数据库中的XML并确定状态的名字给予25状态整数
select id As METADATA_ID, EXTRACTVALUE(xmltype(XML_STRING), '/metadata/states/state[@status="25"]/@label') from metadata;
结果:342, "Approve-Data"
。到现在为止还挺好。上面的查询为该状态创建了所有不同标签的列表。我今天准备这样做,虽然是创建一个视图有以下的列:
METADATA_ID | STATUS_NUM | LABEL
342 0 "New"
342 1 "Data-Entry"
342 25 "Approve-Data"
674 3 "Something-Else"
674 6 "More-Data"
这样,我可以看看了所有的不同映射为不同的元数据ID和进行正常的Oracle连接。鉴于地位数字有差距,是否有办法做到这一点?
我不确定这是可能的直SQL。您可以使用PL/SQL并遍历可能的'status'值的范围。 –