適用対象
説明
データベースに一時LOBを作成します。
使用方法
Set OraBLOB = OraDatabase.CreateTempBLOB(use_caching) Set OraCLOB = OraDatabase.CreateTempCLOB(use_caching)
引数
このメソッドの引数は、次のとおりです。
| 引数 | 説明 |
|---|---|
use_caching |
このLOBにアクセスする際にOracle Databaseでキャッシュを使用するかどうかを指定するブール値。デフォルト値はFALSEです。 |
備考
一時LOBは、データベースに永続的に存在しないLOBです。OO4Oのプログラミングでは一般的に、一時LOBを、LOB引数を含むストアド・プロシージャおよびファンクションへ渡すために使用します。
一時LOBは、トランザクションには関係ありません。(書込み操作の前にロックを取得する必要はなく、また、ロールバックは一時LOBには影響を与えません。)
use_caching引数は、一時LOBにアクセスする際にOracleでキャッシュを使用するよう指定します。これは、1つのLOBに複数のアクセスが予想される場合に推奨します。LOBを作成してデータを格納し、ストアド・プロシージャに渡した後破棄する、といった通常の場合にはキャッシュは必要ありません。
一時LOBは、対応するOraBLOBまたはOraCLOBへの参照がクライアントに存在しなくなるまで、データベースに存在します。これらの参照には、一時OraBLOBまたはOraCLOBオブジェクトを含む任意のOraParameterまたはOraParamArrayが含まれることに注意してください。
例
例: 一時CLOBをストアド・プロシージャに渡す方法
次の例では、CreateTempClobメソッドを使用してOraCLOBを作成する方法を示します。作成されたOraCLOBは、データが移入され、CLOB型の引数を含むストアド・プロシージャに渡されます。
Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraClob as OraClob
'Create the OraSession Object.
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
'Create the OraDatabase Object by opening a connection to Oracle.
Set OraDatabase = OraSession.OpenDatabase("ExampleDb","scott/tiger", 0&)
'Create the stored procedure used in this example
OraDatabase.ExecuteSQL ("create or replace procedure GetClobSize" & _
"(in_clob IN CLOB, clobsize OUT NUMBER) as Begin clobsize" & _
" := DBMS_LOB.GETLENGTH(in_clob); End;")
'create an OraParameter object to represent Clob bind Variable
OraDatabase.Parameters.Add "CLOB", Null, ORAPARM_INPUT, ORATYPE_CLOB
'the size will go into this bind variable
OraDatabase.Parameters.Add "CLOBSIZE", Null, ORAPARM_OUTPUT, ORATYPE_NUMBER
' create a temporary CLOB
set OraClob = OraDatabase.CreateTempClob
'Populate the OraClob with some data. Note that no row locks are needed.
OraClob.Write "This is some test data"
'set the Parameter Value to the temporary Lob
OraDatabase.Parameters("CLOB").Value = OraClob
'execute the sql statement which updates Address in the person_tab
OraDatabase.ExecuteSQL ("Begin GetClobSize(:CLOB, :CLOBSIZE); end;")
'Display the size
MsgBox OraDatabase.Parameters("CLOBSize").Value
'these two lines force the temporary clob to be freed immediately
OraDatabase.Parameters.Remove "CLOB"
Set OraClob = nothing