|
Example - Inserting LOB data |
Top Previous Next |
|
2つの状況下でテーブルに新しいLOBデータを挿入する必要が出てきます:
もしtemporary LOBを使っていないのなら、まずレコードに空のLOB Locatorを挿入/更新しなくてはいけません。 そうするために、挿入や更新命令中でSQL命令のempty_blob()かempty_clob()を使います。サーバー上ではLOB Locatorは初期化されます。初期化されたLOB Locatorは新しいOracle8のreturning節を使って変数内のクライアントへ返されます。 このあとからLOBカラムにデータを書き込むことが出来るようになります。LOB変数を設定するにはSetComplexVariableを使わなければなりません。 次は挿入のサンプルプログラムです: var LOB: TLOBLocator; Buffer: array[0..99] of Byte; begin // insert into lobtable (id, lobcolumn) values (:id, empty_blob()) // returning lobcolumn into :lobcolumn with LOBQuery do begin SetVariable('id', 1); // Create a new BLOB (initially Null) LOB := TLOBLocator.Create(Session, otBLOB); // Assign it to the returning variable SetComplexVariable('lobcolumn', LOB); Execute; // After the insert, use the LOB Locator to write the data LOB.Write(Buffer, 100); LOB.Free; end; end;
もし一時的なLOBを使っている場合、クエリーを実行する前にLOBデータを書くことができ、returning節なしに直接挿入や更新のためにこのLOBデータを使うことが出来ます: var LOB: TLOBLocator; Buffer: array[0..99] of Byte; begin // insert into lobtable (id, lobcolumn) values (:id, :lobcolumn) with LOBQuery do begin SetVariable('id', 1); // Create a new temporary BLOB and write the data LOB := TLOBLocator.CreateTemporary(Session, otBLOB, True); LOB.Write(Buffer, 100); // Assign it to the returning variable SetComplexVariable('lobcolumn', LOB); // Insert it Execute; LOB.Free; end; end;
|