从blob列

时间:2017-01-21 14:41:53

标签: oracle oracle11g blob

我有一个名为MSTCUSTOMERPROFILE的表有一个BLOL类型的列ROLELIST。现在这个BLOB有xml格式的数据,例如数据......

<RoleListDTO>
  <rolelist>
    <RoleDTO>
      <idEntity/>
      <idEntityDesc/>
      <userType>ECU</userType>
      <userTypeDesc/>
      <idRole>5</idRole>
      <description>02A ENQUIRIES - ACCOUNT INFORMATION</description>
      <idChannel>01</idChannel>
      <idChannelDesc/>
      <token/>
      <datCreated/>
      <createdBy/>
      <datLastUpdated/>
      <isDefaultRole>false</isDefaultRole>
      <isDisplayCustProfile>false</isDisplayCustProfile>
      <idcust/>
      <typecust/>
      <roleCreatebyUser>
        <ListUserDTO>
          <idEntity/>
          <idEntityDesc/>
          <userType/>
          <userTypeDesc/>
          <idChannel/>
          <idChannelGroup/>
          <idChannelDesc/>
          <firstName/>
          <lastName/>
          <idChannelUser/>
          <salutation/>
          <idUser/>
          <email/>
          <isActive/>
          <isProxyLocked/>
          <isGroupFlag/>
          <lockReason/>
          <actDeactReason/>
        </ListUserDTO>
      </roleCreatebyUser>
    </RoleDTO>
    <RoleDTO>
      <idEntity/>
      <idEntityDesc/>
      <userType>ECU</userType>
      <userTypeDesc/>
      <idRole>88</idRole>
      <description>02C ENQUIRIES - CREDIT CARD DETAILS</description>
      <idChannel>01</idChannel>
      <idChannelDesc/>
      <token/>
      <datCreated/>
      <createdBy/>
      <datLastUpdated/>
      <isDefaultRole>false</isDefaultRole>
      <isDisplayCustProfile>false</isDisplayCustProfile>
      <idcust/>
      <typecust/>
      <roleCreatebyUser>
        <ListUserDTO>
          <idEntity/>
          <idEntityDesc/>
          <userType/>
          <userTypeDesc/>
          <idChannel/>
          <idChannelGroup/>
          <idChannelDesc/>
          <firstName/>
          <lastName/>
          <idChannelUser/>
          <salutation/>
          <idUser/>
          <email/>
          <isActive/>
          <isProxyLocked/>
          <isGroupFlag/>
          <lockReason/>
          <actDeactReason/>
        </ListUserDTO>
      </roleCreatebyUser>
    </RoleDTO>
  </rolelist>
  <rmemail/>
</RoleListDTO>

我想获取blob中<idRole>标记内的数据,在这种情况下它是88,即我想要获取的结果。

我需要通过select查询来执行此操作,是否可以在Oracle数据库中执行此操作。怎么??

2 个答案:

答案 0 :(得分:0)

查看XML函数doc:https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions002.htm#SQLRF51184

像EXTRACTVALUE

之类的东西

答案 1 :(得分:0)

我有一个解决方法基本上我想根据xml中的节点中的值做一些逻辑,这个值恰好在这个blob中,并且想要在java中。所以我将java中的blob读入一个字节数组,制作了一个DTO,一个完全具有与xml和节点相同的细节和属性的java类,并使用DTO解组逻辑填充它,传递字节数组和所有。

所以基本上我做了一个解决方法,它确实不是我正在寻找的答案,但它的工作原理。