3 一時LOB
一時LOBは、アプリケーションの他のローカル変数と同様に一時LOBです。この章では、一時LOBに固有の操作について説明します。
- 始める前に
一時LOBでの作業を開始する前に、この項のトピックを必ず確認してください。 - 様々なプログラム・インタフェースでの一時LOB API
この項では、様々なプログラム・インタフェースでの一時LOB固有のAPIを示します。 - LOBの変換
値LOBは、一時LOBのサブセットである読取り専用一時LOBのサブセットです。
3.1 LOBの変換
値LOBは、読取り専用一時LOB(これは一時LOBのサブセット)のサブセットです。
次の表に、様々な種類のLOBを変換する方法をまとめます。左側の列は、変換する必要があるソースLOBです。これらの列見出しはターゲットLOBであり、変換後のLOBの最終的な状態です。たとえば、読取り専用一時LOBを値LOBに変換するには、LOB_VALUE(lob_producing_plsql_function(...))
を使用します。
ソースLOB | 値LOB | 読取り専用一時LOB | 一時LOB | 永続LOB |
---|---|---|---|---|
値LOB | 該当なし |
|
直接は不可 | 直接は不可 |
読取り専用一時LOB | LOB_VALUE(lob_producing_plsql_function(...)) |
該当なし | 直接は不可 | 直接は不可 |
一時LOB | LOB_VALUE(temporary_lob) |
READモードでオープンする | 該当なし | 直接は不可 |
永続LOB |
|
直接は不可 | SQL演算子(to_clob() やsubstr() など)を使用する |
該当なし |
次の例では、一時LOBおよび読取り専用一時LOBを値LOBに変換する方法を示します。また、値LOBを読取り専用一時LOBに変換する方法も示します。
DROP TABLE t;
CREATE TABLE t (c clob) lob(c) query as value;
INSERT INTO t VALUES ('I am a CLOB');
CREATE OR REPLACE FUNCTION Vbl2rdo (c clob) RETURN clob IS
BEGIN
RETURN c;
END;
/
-- Transform value LOB to read-only temporary LOB
var tc clob;
BEGIN
SELECT c INTO :tc FROM t;
END;
/
print :tc
SELECT Vbl2rdo(c) FROM t;
-- Transform read-only temporary LOB to value LOB
SELECT lob_value(:tc) FROM dual;
-- Transform temporary LOB to value LOB
SELECT lob_value(to_clob('I am a temporary LOB')) FROM dual;
次の例では、永続LOBを一時LOBおよび値LOBに変換する方法を示します。
DROP TABLE t2;
CREATE TABLE t2 (c CLOB);
INSERT INTO t2 VALUES ('I am a CLOB');
-- Transform persistent LOB to value LOB
SELECT Lob_value(c) FROM t2;
-- Transform persistent LOB to temporary LOB
SELECT To_clob(c) FROM t2;
親トピック: 一時LOB