次の例は、CLOBを半分に分割してから、それぞれを2つの異なるテーブルに挿入する際に使用するSQLプロシージャを示しています。
まずテーブルを定義します。
CREATE TABLE tabc1 ( a1 INTEGER, b1 CLOB); CREATE TABLE tabc2 ( a2 INTEGER, b2 CLOB);
次のSQLコードは、プロシージャを定義します。
CREATE PROCEDURE clobsplitter(IN a1 INTEGER, IN a2 INTEGER, INOUT b CLOB ) BEGIN DECLARE localclob CLOB; DECLARE len INTEGER; SET len = CHARACTERS(b); SET localclob = SUBSTR(b, 1, len/2); INSERT tabc1 (:a1, localclob); INSERT tabc2 (:a2, SUBSTR(b, len/2 + 1)); SET b = localclob || SUBSTR(b, len/2 + 1); END;
上記の手順の次に以下のステップが続きます。
- CLOB bの最初の半分がlocalclobという名前のローカル変数に割り当てられます。
- CLOBの内容がtabc1表に挿入されます。
- CLOB bの後半部分が、ローカルLOB変数を使用せずにtabc2表に挿入されます。
- ローカル変数localclobがbの後半部分と連結され、bに割り当てられます。
- bの内容がアプリケーションに返されます。
別のプロシージャによってclobsplitterが呼び出される場合、bはそのプロシージャに渡されます。