XMLGEN 関数は、XQuery コンストラクタに基づいて XML 値を生成するために使用されます。
次のクエリによって生成される XML は、SQL Anywhere サンプル・データベース内の顧客の注文に関する情報を提供します。このクエリでは、次の変数参照を使用します。
{$ID} SalesOrders テーブルの ID カラムの値を使用して、<ID> 要素の内容を生成します。
{$OrderDate} SalesOrders テーブルの OrderDate カラムの値を使用して、<date> 要素の内容を生成します。
{$Customers} Customers テーブルの CompanyName カラムから <customer> 要素の内容を生成します。
SELECT XMLGEN ( '<order> <ID>{$ID}</ID> <date>{$OrderDate}</date> <customer>{$Customers}</customer> </order>', SalesOrders.ID, SalesOrders.OrderDate, Customers.CompanyName AS Customers ) AS order_info FROM SalesOrders JOIN Customers ON Customers.ID = SalesOrders.CustomerID ORDER BY SalesOrders.CustomerID; |
このクエリは、次の結果を生成します。
order_info | ||
---|---|---|
|
||
|
||
|
||
|
||
... |
注文 ID 番号を <order> 要素の属性としたい場合は、次のようにクエリを記述します (変数参照が二重引用符で囲まれている点に注意してください。これは、属性値を指定しているためです)。
SELECT XMLGEN ( '<order ID="{$ID}"> <date>{$OrderDate}</date> <customer>{$Customers}</customer> </order>', SalesOrders.ID, SalesOrders.OrderDate, Customers.CompanyName AS Customers ) AS order_info FROM SalesOrders JOIN Customers ON Customers.ID = SalesOrders.CustomerID ORDER BY SalesOrders.OrderDate; |
このクエリは、次の結果を生成します。
order_info | ||
---|---|---|
|
||
|
||
|
||
|
||
... |
両方の結果セットにおいて、顧客名 Bloomfield's は、Bloomfield's と引用されています。これは、アポストロフィは XML において特別な文字であり、<customer> 要素が生成される元となったカラムは XML 型ではないためです。
XMLGEN での無効な文字の引用の詳細については、無効な名前と SQL/XMLを参照してください。
SQL Anywhere がサポートする FOR XML 句と SQL/XML 関数は、生成する XML 文書にバージョン宣言情報を含めません。XMLGEN 関数を使用すると、ヘッダ情報を生成できます。
SELECT XMLGEN( '<?xml version="1.0" encoding="ISO-8859-1" ?> <r>{$x}</r>', (SELECT GivenName, Surname FROM Customers FOR XML RAW) AS x ); |
このクエリは、次の結果を生成します。
<?xml version="1.0" encoding="ISO-8859-1" ?> <r> <row GivenName="Michaels" Surname="Devlin"/> <row GivenName="Beth" Surname="Reiser"/> <row GivenName="Erin" Surname="Niedringhaus"/> <row GivenName="Meghan" Surname="Mason"/> ... </r> |
XMLGEN 関数の詳細については、XMLGEN 関数 [文字列] を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |