次の例は、XMLの販売データを含むCLOB値をsalesテーブルに挿入する行のセットに変換するプロシージャを作成します。
まずテーブルを定義します。
CREATE TABLE sales ( partnum INTEGER, qtysold INTEGER, storecode INTEGER, salesdate DATE) PRIMARY INDEX (partnum, qtysold, storecode, salesdate); CREATE TABLE saleslog ( storecode INTEGER, salesdate DATE, sales CLOB, logdate DATE, logtime TIME) PRIMARY INDEX (storecode, salesdate, logdate, logtime);
次のSQLコードは、プロシージャを定義します。
CREATE PROCEDURE stores_sales_procedure (storecode INTEGER, salesdate DATE, salesclob CLOB) BEGIN INSERT INTO saleslog (:storecode, :salesdate, :salesclob, CURRENT_DATE, CURRENT_TIME); INSERT INTO sales SELECT * FROM TABLE (xmlparser(:salesclob)); END;
上記の手順の次に以下のステップが続きます。
- 販売CLOBがsaleslogという名前のログ テーブルに挿入されます。
- CLOBは変数salesclobによってxmlparserという名前のユーザー定義テーブル関数に渡されます(CREATE FUNCTIONおよびREPLACE FUNCTION(テーブル形式)を参照してください)。
- システムはAMPごとにテーブル関数xmlparserを呼び出します。
- テーブル関数はfnc_loblocalを呼び出して(この例ではxmlparserとfnc_loblocalの定義は示していない)、関数が実行されているのと同じAMP上にCLOBがあるかどうかを検出します。
- CLOBにローカルでアクセスする関数はXML販売データを除去し、salesテーブルに挿入される標準のリレーショナル テーブルの行を返します。