Die XMLELEMENT-Funktion konstruiert ein XML-Element aus relationalen Daten. Sie können den Inhalt des generierten Elements
festlegen und gegebenenfalls auch Attribute und Attributinhalte für dieses Element angeben.
Verschachtelte Elemente generieren
Die folgende Abfrage generiert verschachteltes XML, wobei ein <product_info>-Element für jedes Produkt mit Elementen erzeugt
wird, die den Namen, die Menge und die Beschreibung für jedes Produkt liefern:
SELECT ID,
XMLELEMENT( NAME product_info,
XMLELEMENT( NAME item_name, Products.name ),
XMLELEMENT( NAME quantity_left, Products.Quantity ),
XMLELEMENT( NAME description, Products.Size || ' ' ||
Products.Color || ' ' || Products.name )
) AS results
FROM Products
WHERE Quantity > 30;
<product_info>
<item_name>Tee Shirt
</item_name>
<quantity_left>75
</quantity_left>
<description>One Size fits
all Black Tee Shirt
</description>
</product_info>
400
<product_info>
<item_name>Baseball Cap
</item_name>
<quantity_left>112
</quantity_left>
<description>One Size fits
all Black Baseball Cap
</description>
</product_info>
...
...
Element-Inhalt angeben
Mit der XMLELEMENT-Funktion können Sie den Inhalt eines Elements festlegen. Die folgende Anweisung erzeugt ein XML-Element
mit dem Inhalt hat.
SELECT ID, XMLELEMENT( NAME product_type, 'hat' )
FROM Products
WHERE Name IN ( 'Baseball Cap', 'Visor' );
Elemente mit Attributen generieren
Sie können den Elementen Attribute hinzufügen, indem Sie das XMLATTRIBUTES-Argument in Ihrer Abfrage verwenden. Dieses Argument
legt den Attributnamen und Inhalt fest. Die folgende Anweisung erzeugt ein Attribut für den Namen, die Farbe und den Preis
für jeden Artikel.
SELECT ID, XMLELEMENT( NAME item_description,
XMLATTRIBUTES( Name,
Color,
UnitPrice )
) AS item_description_element
FROM Products
WHERE ID > 400;
Attribute können benannt werden, indem die AS-Klausel angegeben wird:
SELECT ID, XMLELEMENT( NAME item_description,
XMLATTRIBUTES ( UnitPrice AS
price ),
Products.name
) AS products
FROM Products
WHERE ID > 400;
Das folgende Beispiel verwendet XMLELEMENT mit einem HTTP-Webservice.
ALTER PROCEDURE "DBA"."http_header_example_with_table_proc"()
RESULT ( res LONG VARCHAR )
BEGIN
DECLARE var LONG VARCHAR;
DECLARE varval LONG VARCHAR;
DECLARE I INT;
DECLARE res LONG VARCHAR;
DECLARE tabl XML;
SET var = NULL;
loop_h:
LOOP
SET var = NEXT_HTTP_HEADER( var );
IF var IS NULL THEN LEAVE leave loop_h END IF;
SET varval = http_header( var );
-- ... do some action for <var,varval> pair...
SET tabl = tabl ||
XMLELEMENT( name "tr",
XMLATTRIBUTES( 'left' AS "align", 'top' AS "valign" ),
XMLELEMENT( name "td", var ),
XMLELEMENT( name "td", varval ) ) ;
END LOOP;
SET res = XMLELEMENT( NAME "table",
XMLATTRIBUTES( '' AS "BORDER", '10' as "CELLPADDING", '0' AS "CELLSPACING" ),
XMLELEMENT( NAME "th",
XMLATTRIBUTES( 'left' AS "align", 'top' AS "valign" ),
'Header Name' ),
XMLELEMENT( NAME "th",
XMLATTRIBUTES( 'left' AS "align", 'top' AS "valign" ),
'Header Value' ),
tabl ) ;
SELECT res;
END
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail.