1 つ以上の XML 文書から、要素 または属性 値の内容を取り出し (抽出) することができます (単一文書または集合文書検索)。 XML エクステンダーには、SQL データ・タイプごとに SQL SELECT 文節内で指定できるユーザー定義の抽出関数が備わっています。
XML データにリレーショナル・データとしてアクセスできるので、 要素と属性の内容および値の取り出しは、アプリケーションの開発に役立ちます。 たとえば、表 SALES_TAB 内の列 ORDER に 1000 の XML 文書が保管されていると仮定します。 SELECT 文節に抽出のための UDF を指定して情報を取り出す次の SQL ステートメントを使用して、 品目を注文した顧客すべての名前を取り出すことができます。
SELECT extractVarchar(Order, '/Order/Customer/Name') from sales_order_view WHERE price > 2500.00
この例では、抽出 UDF は要素 <customer> を列 ORDER から VARCHAR データ・タイプとして取り出します。 ロケーション・パスは /Order/Customer/Name です (ロケーション・パス構文については、 ロケーション・パスを参照)。 さらに、副次要素 <ExtendedPrice> の値が 2500.00 を超える <customer> 要素の内容だけを指定する WHERE 文節を使用することにより、 戻り値の数が減少します。
要素の内容または属性値を抽出する: 以下の構文を表関数または スカラー関数 として使用することにより、 表 13 にリストされている抽出 UDF を使用します。
extractretrieved_datatype(xmlobj, path)
ここで、
表 13 はスカラーと表の両方の形式による抽出関数を示しています。
スカラー関数 | 表関数 | 戻される列名 (表関数) | 戻りタイプ |
---|---|---|---|
extractInteger() | extractIntegers() | returnedInteger | INTEGER |
extractSmallint() | extractSmallints() | returnedSmallint | SMALLINT |
extractDouble() | extractDoubles() | returnedDouble | DOUBLE |
extractReal() | extractReals() | returnedReal | REAL |
extractChar() | extractChars() | returnedChar | CHAR |
extractVarchar() | extractVarchars() | returnedVarchar | VARCHAR |
extractCLOB() | extractCLOBs() | returnedCLOB | CLOB |
extractDate() | extractDates() | returnedDate | DATE |
extractTime() | extractTimes() | returnedTime | TIME |
extractTimestamp() | extractTimestamps() | returnedTimestamp | TIMESTAMP |