sql >> データベース >  >> RDS >> Oracle

XMLからOraclePL/SQL環境のパスのリストへ

    XMLTableを使用できます XQueryを使用してパスのリストを作成します。

    例えば。

    SQLFiddle

    with params as (
      select 
        xmltype('
          <ALFA>
            <BETA>0123</BETA>
            <GAMMA>2345</GAMMA>
            <DELTA>
               <EPSILON>3</EPSILON>
            </DELTA>
          </ALFA>
        ') p_xml
      from dual  
    )    
    select
      path_name || '/text()'
    from
      XMLTable(
        '
          for $i in $doc/descendant-or-self::*
            return <element_path> {$i/string-join(ancestor-or-self::*/name(.), ''/'')} </element_path>
        '
        passing (select p_xml from params) as "doc"
        columns path_name varchar2(4000) path '//element_path'
      )
    

    しかし、少なくともそれができるほど効果的ではないので、それは間違った方法です。

    同じXQueryですべての値を抽出するだけです:( SQLFiddle

    with params as (
      select 
        xmltype('
          <ALFA>
            <BETA>0123</BETA>
            <GAMMA>2345</GAMMA>
            <DELTA>
               <EPSILON>3</EPSILON>
            </DELTA>
          </ALFA>
        ') p_xml
      from dual  
    )    
    select
      element_path, element_text
    from
      XMLTable(
        '              
          for $i in $doc/descendant-or-self::*
            return <element>
                     <element_path> {$i/string-join(ancestor-or-self::*/name(.), ''/'')} </element_path>
                     <element_content> {$i/text()}</element_content>
                   </element>  
        '
        passing (select p_xml from params) as "doc"
        columns 
          element_path   varchar2(4000) path '//element_path',
          element_text   varchar2(4000) path '//element_content'
      )
    



    1. herokuのPostgreSQLDBに255文字以上を保存する

    2. Windows10のPostGisにOSMファイルをインポートする

    3. Laravelの移行内からmysqlDBエンコーディング文字セットを変更することは可能ですか?

    4. 解析エラー:構文エラー、予期しない'='エラー