2.3 表からのLOB値の選択
読取りおよび書込み操作を実行するために、文字バッファ、RAWバッファまたはLOB変数にLOBを選択できます。
- 文字バッファまたはRAWバッファへのLOBの選択
CLOBまたはNCLOB値を文字バッファまたはBLOB値に直接選択できます。これはデータ・インタフェースと呼ばれ、LOB列から選択する最も効率的な方法です。 - 読取り操作用のLOB変数へのLOBの選択
LOB変数に永続LOBまたは一時LOBを選択し、APIを使用してそのLOBに対して様々な読取り操作を実行できます。 - 書込み操作用のLOB変数へのLOBの選択
LOBロケータを使用して書込み操作を実行するには、トランザクション中に他のデータベース・ユーザーがLOBに書き込めないように、表内の行をロックする必要があります。
親トピック: 永続LOB
2.3.1 文字バッファまたはRAWバッファへのLOBの選択
CLOB値またはNCLOB値は、文字バッファまたはBLOB値に直接選択できます。これはデータ・インタフェースと呼ばれ、LOB列から選択する最も効率的な方法です。
親トピック: 表からのLOB値の選択
2.3.2 読取り操作用のLOB変数へのLOBの選択
LOB変数に永続LOBまたは一時LOBを選択し、APIを使用してそのLOBに対して様々な読取り操作を実行できます。
次のコードでは、LOBロケータを選択して変数にします。
DECLARE
perslob CLOB;
templob CLOB;
amt INTEGER := 11;
buf VARCHAR(100);
BEGIN
SELECT ad_source, substr(ad_source, 3) INTO perslob, templob FROM Print_media WHERE product_id = 1 AND ad_id = 1;
DBMS_LOB.READ(perslob, amt, buf);
DBMS_LOB.READ(templob, amt, buf);
END;
/
親トピック: 表からのLOB値の選択
2.3.3 書込み操作用のLOB変数へのLOBの選択
LOBロケータを使用して書込み操作を実行するには、トランザクション中に他のデータベース・ユーザーがLOBに書き込むのを防ぐために、表内の行をロックする必要があります。
この操作には、次のメカニズムのいずれかを使用できます。
RETURNING
句を使用したINSERT
またはUPDATE
操作の実行。UPDATE
操作に対するSELECT
の実行。次のコード・スニペットは、UPDATE
を使用してLOB値を選択し、書込み操作を実行する方法を示しています。DECLARE c CLOB; amt INTEGER := 9; buf VARCHAR(100) := 'New Value'; BEGIN SELECT ad_sourcetext INTO c FROM Print_media WHERE product_id = 1 AND ad_id = 1 FOR UPDATE; DBMS_LOB.WRITE(c, amt, 1, buf); END; /
- OCIプログラムでのOCI
pin
またはlock
関数の使用。
親トピック: 表からのLOB値の選択