У меня есть таблица Oracle, которая хранит много данных в формате XML в CLOB
. Например, он сопоставляет статусные целые числа с персонализированными именами состояний. Вот некоторые упрощенным 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"
Таким образом, я мог смотреть на все различные отображения для различных идентификаторов метаданных и выполнять нормальный Oracle присоединяется. Есть ли способ сделать это, учитывая, что в номерах статуса есть пробелы?
Я не уверен, что это возможно с прямым SQL. Вы можете использовать PL/SQL и перебирать диапазон возможных значений состояния. –