ヘッダーをスキップ
Oracle Objects for OLE 開発者ガイド
11g リリース1(11.1)
E05794-01
  目次へ
目次
索引へ
索引

戻る
戻る
 
次へ
次へ
 

9 サーバー・オブジェクト

この章では、Oracle Objects for OLEのサーバー・オブジェクトについて説明します。

内容は次のとおりです。


OraAQオブジェクト

説明

OraAQオブジェクトは、OraDatabaseインタフェースのCreateAQメソッドをコールすることによってインスタンス化されます。このオブジェクトは、データベース内のキューを表します。

備考

Oracle Objects for OLEは、Oracle Databaseのアドバンスト・キューイング(AQ)機能にアクセスするインタフェースを提供します。これにより、Visual Basicなどの一般的なCOMベースの開発環境からAQにアクセスできるようにします。

OraAQオートメーション・インタフェースは、メッセージ(OraAQMsgオブジェクトにカプセル化されている)をエンキューおよびデキューするメソッドを提供します。着信メッセージのキューを監視するメソッドも提供します。

クライアント・アプリケーションには、モニターへのDispatchインタフェースがあります。このモニターは、アプリケーションの基準を満たしているメッセージのキューをチェックします。次に、モニターは、これらのメッセージがデキューされると、DispatchインタフェースのNotifyMeメソッドをコールします。

次の図は、OO4O AQオートメーション・オブジェクトとそのプロパティを示したものです。

o4o00016.gifの説明は次にあります。
画像o4o00016.gifの説明

プロパティ

メソッド

例: メッセージのエンキュー

RAW型のメッセージのエンキュー

「RAW型のメッセージのエンキュー」

Oracleオブジェクト型のメッセージのエンキュー

「Oracleオブジェクト型のメッセージのエンキュー」

例: メッセージのデキュー

注意: 次のサンプル・コードは、メッセージ・デキューの標準的な例です。

完全なAQサンプルは、\OO4O\VB\SAMPLES\AQにあります。

RAW型のメッセージのデキュー

「例: RAW型のメッセージのデキュー」

Oracleオブジェクト型のメッセージのデキュー

「例: Oracleオブジェクト型のメッセージのデキュー」

例: メッセージの監視

MonitorStartMonitorStopメソッドの使用例は、「メッセージの監視」を参照してください。


関連項目:



OraAQAgentオブジェクト

説明

OraAQAgentは、メッセージ受信者を表すオブジェクトで、複数のコンシューマを許可するキューに対してのみ有効です。

備考

OraAQAgentオブジェクトは、AQAgentメソッドをコールすることによってインスタンス化できます。次に、例を示します。

Set agent = qMsg.AQAgent(name)

メソッド

なし

プロパティ

次のVisual Basicの例は、アドバンスト・キューイング機能の簡単な使用例です。 ユーザー定義型のメッセージMESSAGE_TYPEが、複数のコンシューマをサポートするキューmsg_queueにエンキューされています。

Dim q as OraAQ
Dim qMsg as OraAQMsg
Dim agent as OraAQAgent
Set q = OraDatabase.CreateAQ("msg_queue")
Set qMsg = q.AQMsg(1,"MESSAGE_TYPE")

'To add SCOTT as a recipient for the message,
Set agent = qMsg.AQAgent("SCOTT")

'To enqueue,
q.Enqueue

関連項目:



OraAQMsgオブジェクト

説明

OraAQMsgオブジェクトは、エンキューまたはデキューされたメッセージをカプセル化します。メッセージは、ユーザー定義型またはRAW型にできます。

プロパティ

メソッド


関連項目:



OraAttributeオブジェクト

説明

OraAttributeオブジェクトは、OraObjectまたはOraRefValueまたはREFインスタンスの属性を表します。

備考

OraAttributeオブジェクトは、順序を示す整数を使用する添字を作成するか、または名前属性を使用することによって、OraObjectまたはOraRefオブジェクトからアクセスできます。

OraAttributeオブジェクトのValueプロパティの属性の型および戻り値を識別する表は、ValueOraAttribute)プロパティを参照してください。

プロパティ

メソッド

なし

次の例では、サーバー内のADDRESS値インスタンスの属性にアクセスします。サンプル・コードを実行する前に、必要なデータ型と表がデータベース内にあることを確認してください。「OraObjectおよびOraRefの例で使用されているスキーマ・オブジェクト」を参照してください。

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
Dim Address As OraObject
Dim City As OraAttribute
Dim State As OraAttribute

'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 a dynaset object from person_tab
Set OraDynaset = OraDatabase.CreateDynaset("select * from person_tab", 0&)

'retrieve an address column from person_tab
'the Value property of OraField object returns Address OraObject
Set Address = OraDynaset.Fields("Addr").Value

'access the City attribute object
Set City = Address("City")

' display the value of City attribute Object
MsgBox City.Value

'access the State attribute object
Set State = Address("State")

'display the value of State attribute Object
MsgBox State.Value

OraBFILEオブジェクト

説明

OO4OのOraBFileインタフェースは、データベース内のBFILE LOBデータ型に関する操作を実行するメソッドを提供します。

備考

BFILE型は、データベース表領域以外のオペレーティング・システム・ファイル(外部ファイル)として格納されるラージ・バイナリ・データのオブジェクトです。

プロパティ

メソッド

OraLOB/BFILEの例で使用されているスキーマ・オブジェクトについては、「LOBデータ型の例で使用されているスキーマ・オブジェクト」を参照してください。

注意: 次の例に必要な表を追加するには、\OO4O\VB\SAMPLES\LOBディレクトリにあるlob.sqlファイルを実行してください。

例: BFILE値へのアクセス

BFILEデータは、Readメソッドを使用して読み込むことができます。OraBFILEオブジェクトでは、ピース単位の読取り操作が可能です。BFILEの内容を読み込むには、Openメソッドを使用してBFILEファイルをオープンする必要があります。

Dim PartColl as OraBFile
Dim buffer As Variant

'Create a Dynaset containing a BLOB and a CLOB column
set part = OraDatabase.CreateDynaset ("select * from part",0)
Set PartColl = part.Fields("part_collateral").Value

'open the bfile for read operation
PartColl.Open

'read the entire bfile
amount_read = PartColl.Read(buffer)

'close the bfile
PartColl.Close

例: ダイナセットを使用したBFILEの読取りと挿入

OraBFILEオブジェクトのBFILE値のディレクトリ名とファイル名を変更するには、最初にロックを取得してから、DirectoryNameプロパティとFileNameプロパティを使用します。

BFILE列を含んだ新しい行を挿入するには、DirectoryNameプロパティとFileNameプロパティを使用して、そのBFILE列を新しいディレクトリ名とファイル名の値で初期化します。

Dim PartColl as OraBFile
Dim buffer As Variant

'Create a Dynaset containing a BLOB and a CLOB column
set part = OraDatabase.CreateDynaset ("select * from part",0)
Set PartColl = part.Fields("part_collateral").Value

'insert a new BFILE in the part_collateral column
part.AddNew

'Directory objects will be upper-case by default
    PartColl.DirectoryName = "NEWDIRECTORYNAME"
    PartColl.FileName = "NewPartCollatoral"
part.Update

'move to the newly added row
part.MoveLast

'open the Bfile for read operation
PartColl.Open

'read the entire bfile
amount_read = PartColl.Read(buffer)

'close the Bfile
PartColl.Close


関連項目:

  • OraBLOB、OraCLOBオブジェクト

  • Oracle BFILE型の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。



OraBLOB、OraCLOBオブジェクト

説明

OO4OのOraBLOBOraCLOBインタフェースは、データベース内のラージ・オブジェクト・データ型BLOBCLOBおよびNCLOBに関する操作を実行するメソッドを提供します。このマニュアルでは、BLOBCLOBおよびNCLOBのデータ型をLOBデータ型とも呼びます。

OO4Oでは、一時BLOBまたはCLOB型の作成をサポートしています。これらの型を操作してSQL文やPL/SQLブロックにバインドしたり、永続LOBにコピーできます。

備考

LOBデータへのアクセスには、ReadおよびCopyToFileメソッドを使用します。

LOBデータの変更には、WriteAppendEraseTrimCopyCopyFromFileおよびCopyFromBFileメソッドを使用します。行にあるLOB列のデータを変更するには、その前に行ロックを取得する必要があります。LOB列がOraDynasetオブジェクトのフィールドである場合は、Editメソッドをコールしてロックを取得します。

NULLのLOBで許可されるLOB操作はありません。エラーを回避するには、IsNullプロパティを使用してNULLのLOBを検出します。NULLのLOBで書込み操作を実行するには、最初にLOB列を空の値で初期化しておく必要があります。

LOB列を含んだ新しい行を挿入するには、最初にそのLOB列を空の値で初期化します。初期化するには、OraFieldまたはOraParameterオブジェクトのValueプロパティを空のキーワードに設定し、データベースに対して変更をコミットします。新しく更新した空のLOBは、使用する前にデータベースから再度選択する必要があります。OraDynasetオブジェクトの場合、この再選択は自動的に行われます。つまり、OraDynasetオブジェクトのLOBフィールドが空に設定されているときにUpdateメソッドがコールされると、OO4Oでは空のLOBをダイナセットに対して再選択し、後続の書込み操作で使用できるようにします。

LOBの読取りおよび書込み操作には、2つの操作モードがあります。

  1. 複数ピースの読取り/書込み操作

    このモードでは、読取りまたは書込みデータ量の合計が、個々の読取り/書込み操作に使用するバッファのサイズよりも大きくなります。操作ごとに完全なラウンドトリップを行わず、複数のピースがストリーム化されます。複数ピースの操作を開始するには、最初にPollingAmountプロパティを、読取り/書込みデータ量の合計に設定します。この時点でOffsetプロパティを設定して、最初のピースの読取り/書込み操作に対する初期オフセットを指定します。このオフセットは、最初の読取り/書込み操作後は自動的に増分され、複数ピース操作が完了するまで変更できません。各ピース単位の操作の正常な実行については、Statusプロパティをチェックする必要があります。この操作は、すべてのピースの読取り/書込みが終了するまで続行する必要があります(強制終了はできません)。同じLOBで別の複数ピースの読取り/書込み操作を開始するには、PollingAmountプロパティを必要な量に再設定する必要があります。「例: LOBの複数ピース読取り」を参照してください。

  2. 単一ピースの読取り/書込み操作

    このモードでは、データの読取りと書込みが1回の操作で発生します。このモードは、PollingAmountプロパティを0に設定すると使用可能になります。「例: LOBの単一ピース読取り」を参照してください。

    両方の操作モードとも、Offsetプロパティは、1を基準とします。

設計上、LOBは、SELECT ..FOR UPDATEINSERTおよびUPDATE文で開始した複数のトランザクションにまたがることはできません。これらのSQL文を使用してLOB値を選択または変更すると、現行のトランザクション外では、LOBが無効になります。Oracle Objects for OLEでは、トランザクションは次の方法で開始および終了できます。

  1. Dynaset Edit/Updateメソッド

    EditメソッドはSELECT FOR UPDATE文を実行し、行をロックしてトランザクションを開始します。Updateメソッドはトランザクションを終了します。LOB列の値がEditUpdateのペアの間で変更された場合、OO4Oは、Updateコールの後でLOB列の値を再選択します。この再選択は、ユーザーに対して透過的に実行されます。LOBがOracleオブジェクト・インスタンスの属性またはOracleコレクションの要素である場合、OO4OはLOB値の再選択を実行しません。トランザクションがOraSession/OraDatabaseまたはOraServerオブジェクトで開始され、LOBデータがEditメソッドとUpdateメソッドの間で変更された場合、OO4OはデータベースからLOB値を再選択しません。LOBが無効となるのは、OraSession/OraDatabaseまたはOraServerオブジェクトで開始されたトランザクションをコミットした後です。

    「例: LOBを含むダイナセットとトランザクション」を参照してください。

  2. ExecuteSQLまたはCreateSQLメソッドを介したINSERTまたはUPDATE文の実行

    トランザクションは、INSERTまたはUPDATE文によって開始され、Oracle Objects for OLEによって暗黙的に終了されます(自動コミット)。文にLOB出力バインド・パラメータが含まれている場合は、RETURNING ..INTO句と同様に、その文は、ExecuteSQLまたはCreateSQLメソッドの実行後に無効となります。これを回避するには、これらの文をOraSessionOraServerまたはOraDatabaseオブジェクトのBeginTrans/CommitTransペアの間に実行してください。

    「例: LOBを使用するINSERTまたはUPDATE文とトランザクション」を参照してください。


関連項目:

  • LOBの操作とパフォーマンスに関する問題の詳細は、「例: ラージ・オブジェクト(LOB)の使用」を参照してください。

  • Oracle LOBの詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。


プロパティ

メソッド

OraLOBとBFILEの例で使用されているスキーマ・オブジェクトについては、「LOBデータ型の例で使用されているスキーマ・オブジェクト」を参照してください。

例: LOB値へのアクセス

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
Dim PartImage as OraBlob
Dim buffer As Variant

'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&)

'execute the select statement
set OraDynaset = OraDatabase.CreateDynaset ("select * from part",0&)

'retrieve photo field from the dynaset
set PartImage = OraDynaset.Fields("part_image").Value

'read the entire LOB column in one piece into the buffer
amount_read = PartImage.Read(buffer, 10)
'use the buffer for internal processing

例: LOB値の変更

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
Dim  PartDesc as OraClob
Dim buffer As String

'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&)

'execute the select statement
set OraDynaset = OraDatabase.CreateDynaset ("select * from part",0&)
set PartDesc = OraDynaset.Fields("part_desc").Value

'To get a free file number
FNum = FreeFile
'Open the file for reading
Open "partdesc.dat" For Binary As #FNum

'Allocate buffer to the size of file FNum and read the entire file
buffer = String$(LOF(FNum), 32)
Get #FNum, , buffer

'lock the row for write operation
OraDynaset.Edit
amount_written = PartDesc.Write(buffer)

'commit the operation and release the lock
OraDynaset.Update
Close FNum

例: ダイナセットを使用したLOBの挿入

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim Part As OraDynaset
Dim PartImage as OraBLOB
Dim ImageChunk() As Byte
Dim amount_written As Long

'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 a Dynaset containing a BLOB and a CLOB column

set part = OraDatabase.CreateDynaset ("select * from part",0)
set PartImage = part.Fields("part_image").Value

'First insert Empty LOB in the part_image column
part.AddNew
    part.Fields("part_id").Value = 1234
    part.Fields("part_image").Value = Empty
part.Update

'move to the newly added row
Part.MoveLast

'To get a free file number
FNum = FreeFile

'Open the file for reading PartImages
Open "part_picture.gif" For Binary As #FNum

'Re adjust the buffer size to hold entire file data

Redim ImageChunk(LOF(FNum))

'read the entire file and put it into buffer
Get #FNum, , ImageChunk

'call dynaset's Edit method to lock the row
part.Edit
amount_written = OraBlob.Write(ImageChunk)
part.Update

'close the file
Close FNum

例: OraParameterオブジェクトを使用したLOBの挿入

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraBlob As OraBlob
Dim ImageChunk() As Byte
Dim amount_written As Long

'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&)
Set OraParameters = OraDatabase.Parameters
OraParameters.Add "PartImage", Empty,ORAPARM_OUTPUT
OraParameters("PartImage").ServerType = ORATYPE_BLOB

'BeginTrans needs to be called since LOB locators become
'invalid after the ExecuteSQL call
OraSession.BeginTrans
OraDatabase.ExecuteSQL ("insert into part values (1234,'Oracle  Application'," & _
                "EMPTY_BLOB(),NULL,NULL) RETURNING part_image INTO :PartImage")
set PartImage = OraDatabase.Parameters("PARTIMAGE").Value

FNum = FreeFile
'Open the file for reading PartImages
Open "part_picture.gif" For Binary As #FNum

'read the file and put it into buffer
Redim ImageChunk(LOF(FNum))
Get #FNum, , ImageChunk

Set OraBlob = OraDatabase.Parameters("PartImage").Value
amount_written = OraBlob.Write(ImageChunk, 10, ORALOB_ONE_PIECE)

' commit the transaction and close the file
OraSession.CommitTrans
Close FNum

例: LOBを含むダイナセットとトランザクション

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraBlob As OraBlob
Dim PartImage as OraBLOB
Dim ImageChunk() As Byte
Dim amount_written As Long

'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 a Dynaset containing a BLOB and a CLOB column
set part = OraDatabase.CreateDynaset ("select * from part " & _
                              "where part_id = 1234",0)
set PartImage = part.Fields("part_image").Value

'To get a free file number
FNum = FreeFile

'Open the file for reading PartImages
Open "c:\part_picture.gif" For Binary As #FNum
Redim ImageChunk(LOF(FNum))

'read the file and put it into buffer
Get #FNum, , ImageChunk

'starts the transaction on OraSession
OraSession.BeginTrans

'call dynaset's Edit method to lock the row
part.Edit
Set OraBlob = PartImage
amount_written = OraBlob.Write(ImageChunk, 10, ORALOB_ONE_PIECE)
part.Update

'ends the transaction
OraSession.CommitTrans

'the following lines of code will raise error
'LOB locator cannot span transaction'
msgbox Partimage.Size
Close FNum

例: LOBを使用するINSERTまたはUPDATE文とトランザクション

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim ImageChunk() As Byte
Dim amount_written As Long

'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&)

Set OraParameters = OraDatabase.Parameters
OraParameters.Add "PartImage", Empty,ORAPARM_OUTPUT
OraParameters("PartImage").ServerType = ORATYPE_BLOB

'Create a Dynaset containing a LOB,column
OraDatabase.ExecuteSQL ("insert into part values (1234,'Oracle Application'," & _
                  "EMPTY_BLOB(),NULL,NULL) RETURNING part_image INTO :PartImage")
set PartImage = OraDatabase.Parameters("PARTIMAGE").Value

'the following lines of code will raise error
'LOB locator cannot span transaction'
msgbox Partimage.Size

例: CopyToFileメソッドの使用方法

「例: CopyToFileメソッドの使用方法」を参照してください。

例: CopyFromFileメソッドの使用方法

「例: CopyFromFileメソッドの使用方法」を参照してください。

例: LOBの複数ピース読取り

「例: LOBの複数ピース読取り」を参照してください。

例: LOBの単一ピース読取り

「例: LOBの単一ピース読取り」を参照してください。

例: LOBの複数ピース書込み

「例: LOBの複数ピース書込み」を参照してください。

例: LOBの単一ピース書込み

「例: LOBの単一ピース書込み」を参照してください。

例: 一時CLOBをストアド・プロシージャに渡す方法

「例: 一時CLOBをストアド・プロシージャに渡す方法」を参照してください。


OraClientオブジェクト

説明

OraClientオブジェクトはワークステーションのドメインを定義します。このワークステーションのすべてのOraSessionオブジェクトは、OraClientオブジェクトのOraSessionsコレクションにリストされます。

備考

各ワークステーションに存在するOraClientオブジェクトは1つのみで、必要な場合はシステムによって自動的に作成されます。

プロパティ

メソッド


OraCollectionオブジェクト

説明

OraCollectionインタフェースは、可変長配列(VARRAY)やネストした表などのOracleコレクション型を表します。

備考

コレクションとは、すべて同じ型の要素が順序付けされたグループです。たとえば、クラス内の生徒またはクラス内の各生徒に対する評価などが考えられます。各要素には、索引と呼ばれる固有の添字があり、コレクション内の位置を判断します。

ネストした表のコレクション型は、データベース表の列に格納された表として参照できます。ネストした表の行には、1から開始する連続した添字が割り当てられ、配列にアクセスする要領で、個々の行にアクセスして取り出します。

VARRAYのコレクション型は、データベース表の列に格納された配列として参照できます。VARRAYデータ型の要素を参照するには、標準的な添字構文を使用できます。たとえば、Grade(3)は、Gradesという名前のVARRAYデータ型の3番目の要素を参照します。

OraCollectionは、Oracleコレクションにアクセスして操作するメソッドを提供します。OraCollectionオブジェクトには、Oracleコレクションの個々の要素にアクセスして操作(更新と挿入)するOLEオートメーション・コレクション・インタフェースが暗黙的に含まれます。添字を使用して、個々の要素にアクセスできます。OraCollection要素の索引は1から開始します。

要素の値は、Variant型として取り出されます。要素のVariant型は、コレクションの要素の型によって決まります。要素の値にはNULLを使用でき、NULLを設定できます。オブジェクト型およびREFの要素の場合は、要素の値が、その型に対応するOO4Oオブジェクトとして戻されます。VARRAYおよびネストした表は、LOB、VARRAYおよびネストした表の要素をサポートしません。

表9-1に、要素の型とその要素の戻り値を示します。

表9-1 要素の型と要素の戻り値

要素の型 要素の値

Object

OraObject

REF

OraRef

Date

String

Number

String

CHARVARCHAR2

String

Real

Real

Integer

Integer


要素の値は、SafeArrayプロパティを使用して、Variant型のSAFEARRAY形式に変換されます。サポートの対象は、基本的な型の要素のみです。VariantSAFEARRAYの索引は0から開始します。

OraDatabaseオブジェクトのCreateOraObjectメソッドは、OraCollectionオブジェクトを戻します。このOraCollectionオブジェクトに関連付けられたOracleコレクションは、クライアント側のオブジェクト・キャッシュに作成されます。

コレクションからダイナセットを作成する方法については、「OraCollectionオブジェクトからのダイナセットの作成」を参照してください。

プロパティ

メソッド

サンプル・コードを実行する前に、必要なデータ型と表がデータベース内にあることを確認してください。OraCollectionの例で使用されているスキーマ・オブジェクトについては、「OraCollectionの例で使用されているスキーマ・オブジェクト」を参照してください。

例: コレクション要素へのアクセス

次の例では、コレクション要素へのアクセス方法を示します。

OraDynasetの例

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim EnameList as OraCollection

'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 a dynaset object from department
set OraDynaset = OraDatabase.CreateDynaset("select * from department", 0&)

'retrieve a Enames column from Department.
'Here Value property of OraField object returns EnameList OraCollection
set EnameList = OraDynaset.Fields("Enames").Value

'access the first element of EnameList
msgbox  EnameList(1)

'move to next to row
OraDynaset.MoveNext

'access all the elements of EnameList for the second row
For index = 1 To EnameList.Size
        msgbox EnameList(index)
Next Index

OraParameterの例

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim EnameList as OraCollection

'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 an  OraParameter object representing EnameList collection bind Variable
OraDatabase.Parameters.Add "ENAMES", Null, ORAPARM_OUTPUT, _
                 ORATYPE_VARRAY,"ENAMELIST"

'execute the sql statement which selects ENAMES VARRAY  from the department  table

OraDatabase.ExecuteSQL ("BEGIN select enames  into :ENAMES  from department " & _
                   "where  dept_id = 10;  END;")

'get the EnameList collection  from OraParameter
set EnameList = OraDatabase.Parameters("ENAMES").Value

'access all the elements of EnameList
For index = 1 To EnameList.Size
        msgbox EnameList(index)
Next Index

例: コレクション要素の変更

次の例では、コレクション要素の変更方法を示します。

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim EnameList as OraCollection

'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 a dynaset object from department
set OraDynaset = OraDatabase.CreateDynaset("select * from department", 0&)

'retrieve a Enames column from Department. Here Value property of OraField object
'returns EnameList OraCollection

set EnameList = OraDynaset.Fields("Enames").Value

'lock the row for editing and set the 2nd element of the EnameList to new value
OraDynaset.Edit
EnameList(2) = "Eric"
OraDynaset.Update

例: コレクションへの挿入

次の例では、要素をOracleコレクションに挿入する方法を示します。

OraDynasetの例

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim EnameListNew as OraCollection

'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 a new OraCollection object from the database
set EnameListNew = OraDatabase.CreateOraObject("ENAMELIST")

'set EnameListNew's element values
EnameListNew(1)  = "Nasser"
EnameListNew(2) =  "Chris"
EnameListNew(3) =  "Gopal"

'create a dynaset object from department
set OraDynaset = OraDatabase.CreateDynaset("select * from department", 0&)

'start the AddNew operation and insert the EnameListNew collection
OraDynaset.AddNew
OraDynaset.Fields("dept_id") = 40
OraDynaset.Fields("name") = "DEVELOPMENT"

'set the EnameListNew to enames column
OraDynaset.Fields("enames") = EnameListNew
OraDynaset.Update

OraParameterの例

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim EnameListNew as OraCollection

'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 a new OraCollection object from the database
set EnameListNew = OraDatabase.CreateOraObject("ENAMELIST")

'set EnameListNew's element values
EnameListNew(1)  = "Nasser"
EnameListNew(2) =  "Chris"
EnameListNew(3) =  "Gopal"

'create an input OraParameter object representing EnameList collection bind 'Variable

OraDatabase.Parameters.Add "ENAMES", Null, ORAPARM_INPUT, ORATYPE_VARRAY, _
                "ENAMELIST"

'set the ENAMES parameter value to EnameListNew
OraDatabase.Parameters("ENAMES").Value  = EnameListNew

'execute the insert sql statement
OraDatabase.ExecuteSQL ("insert into department values (40,'DEVELOPMENT', " & _
              ":ENAMES)")

例: オブジェクト型の要素を含むコレクション

次の例では、オブジェクト型の要素を含むOracleコレクションの使用方法を示します。

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim CourseList as OraCollection
Dim Course as OraObject

'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 a dynaset object from division
set OraDynaset = OraDatabase.CreateDynaset("select * from division", 0&)

'retrieve a Courses column from Division.
'Here Value property of OraField object returns CourseList OraCollection

set CourseList = OraDynaset.Fields("Courses").Value
'retrieve the element value of the CourseList at index 1.
'Here element value is returned as Course OraObject
set Course = CourseList(1)

'retrieve course_no and title attribute of the Course
msgbox Course.course_no
msgbox Course.title

'move to next row
OraDynaset.MoveNext

'now CourseList object represents collection value for the second row
'and course OraObject 'represents the element value at index 1.
'retrieve course_no and title attribute of the Course.
msgbox Course.course_no
msgbox Course.title

例: コレクションからのSAFEARRAY変数の作成

次の例では、Oracleコレクションを使用してSAFEARRAY Variant型を取得および設定する方法を示します。

コレクションからのSAFEARRAY変数の作成

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim EnameList as OraCollection
Dim EnameArray as Variant

'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 a dynaset object from department
set OraDynaset = OraDatabase.CreateDynaset("select * from department", 0&)

'retrieve a Enames column from Department.
'Here Value property of OraField objectreturns EnameList OraCollection
set EnameList = OraDynaset.Fields("Enames").Value

'get the Variant SAFEARRAY from the collection.
EnameArray = EnameList.SafeArray

'display the individual elements of EnameArray
msgbox EnameArray(0)
msgbox EnameArray(1)
msgbox EnameArray(2)

コレクションへのSAFEARRAY変数の設定

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim EnameList as OraCollection
Dim EnameArray() As String
ReDim EnameArray(3)

'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 an Empty uninitialized input OraParameter object
'represent EnameList collection bind Variable
OraDatabase.Parameters.Add "ENAMES", Empty, ORAPARM_INPUT, _
                            ORATYPE_VARRAY,"ENAMELIST"

'get the Empty uninitialized ENAMES parameter value
set EnameList = OraDatabase.Parameters("ENAMES").Value

'initialize the EnameArray
EnameArray(0) = "Nasser"
EnameArray(1) = "Chris"
EnameArray(2) = "Gopal"

'set the EnameArray to EnameList's SafeArray
EnameList.SafeArray = EnameArray

'execute the insert sql statement
OraDatabase.ExecuteSQL ("insert into department " & _
                "values (40,'DEVELOPMENT', :ENAMES)")

例: コレクションからのダイナセットの作成

次の例では、Oracleコレクションからダイナセットを作成する方法を示します。

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim CourseList as OraCollection
Dim Course as OraObject
Dim CourseListDyn as OraDynaset

'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 a dynaset object from division
set OraDynaset = OraDatabase.CreateDynaset("select * from division", 0&)

'retrieve a Courses column from Division. Here Value
'property of OraField object returns CourseList OraCollection
set CourseList = OraDynaset.Fields("Courses").Value

'create a input parameter for CourseList for nested table dynaset
OraDatabase.Parameters.Add "COURSELIST", CourseList, ORAPARM_INPUT, _
                            ORATYPE_TABLE, "COURSELIST"

'create a read only dynaset based on the CourseList.
Set CourseListDyn = OraDatabase.CreateDynaset("select * from THE" & _
          "(select CAST(:COURSELIST AS COURSELIST) from dual)", ORADYN_READONLY)

'dynaset can also be created from Oracle8 collection
'using the following statement, which requires OO4O v8.1.x later

Set CourseListDyn = OraDatabase.CreateDynaset("select * from " & _
           "TABLE(CAST(:COURSELIST AS COURSELIST))", ORADYN_READONLY)

'get the field values of the collection dynaset
msgbox CourseListDyn.Fields("title").Value
msgbox CourseListDyn.Fields("course_no").Value

'move the original dynaset to second row
Oradynaset.MoveNext

'set the new value of CourseList  collection from the second row of main dynaset
'to the "COURSELIST" parameter
OraDatabase.Parameters("COURSELIST").Value = CourseList

'refresh the collection dynaset. Now the collection dynaset values are refreshed
' with new collection value.
CourseListDyn.Refresh

'get the field values of the collection dynaset
msgbox CourseListDyn.Fields("title").Value
msgbox CourseListDyn.Fields("course_no").Value

例: コレクション・イテレータ

「例: OraCollectionイテレータ」を参照してください。


OraConnectionオブジェクト

説明

OraConnectionオブジェクトは、Oracleデータベースへの単一の接続を表します。

備考

OraConnectionオブジェクトは、セッション内でOraDatabaseオブジェクトがインスタンス化されるたびに自動的に作成され、接続を使用しているすべてのデータベースが破棄されると自動的に破棄されます。

現在、OraConnectionオブジェクトを明示的に作成する方法はありません。接続を必要とするOraDatabaseオブジェクトを作成することによって自動的に作成されます。

プロパティ

メソッド


OraDatabaseオブジェクト

説明

OraDatabaseインタフェースは、Oracleデータベースに対するユーザー・セッションを表し、SQLとPL/SQLを実行するメソッドを提供します。

備考

Oracle8i以上のリリースでのOraDatabaseインタフェースには、トランザクションを制御し、Oracleオブジェクト型のインスタンスを表すインタフェースを作成するためのメソッドが追加されました。スキーマ・オブジェクトの属性は、このOraDatabaseインタフェースのDescribeメソッドを使用して取り出すことができます。

以前のリリースでは、OraDatabaseオブジェクトは、OraSessionインタフェースのOpenDatabaseメソッドをコールすることによって作成されていました。このメソッドの引数には、ネットワークの別名、ユーザー名およびパスワードが渡されます。Oracle8i以上のリリースでは、このメソッドのコールによってOraServerオブジェクトが暗黙的に作成されます。

OraServerインタフェースで説明したように、OraDatabaseオブジェクトは、OraServerインタフェースのOpenDatabaseメソッドを使用して作成することもできます。

トランザクション制御メソッドは、OraDatabase(ユーザー・セッション)レベルで使用できます。次のメソッドが含まれます。

次に、例を示します。

MyDatabase.BeginTrans
MyDatabase.ExecuteSQL("delete from emp where empno = 1234")
MyDatabase.CommitTrans


注意:

AutoCommitプロパティがTRUEに設定されている場合は、トランザクションは自動的にコミットされるため、トランザクション制御メソッドを使用する必要はありません。

プロパティ

メソッド


OraDynasetオブジェクト

説明

OraDynasetオブジェクトは、SQL SELECT文から作成されたデータの参照と更新を許可します。

備考

OraDynasetオブジェクトは、SQL SELECT問合せの結果セットまたはストアド・プロシージャやファンクションから戻ったPL/SQLカーソル変数を表します。このオブジェクトは本来、クライアント側でスクロールおよび更新できるカーソルで、実行した問合せで生成された行セットを参照できます。このオブジェクトは、OraDatabaseインタフェースのCreateDynasetまたはCreateCustomDynasetメソッドによって作成されます。OraDynasetオブジェクトを使用すると、VARRAY、ネストした表、ObjectREF、LOBとBFILE型などのリレーショナルおよびオブジェクト・リレーショナル列のインスタンスが含まれた結果セットをスクロールできます。

このオブジェクトは、更新などのデータベース操作を透過的にミラー化します。Updateメソッドを介してデータが更新されると、問合せのローカル・ミラー・イメージが更新されるため、問合せを再評価せずにデータが変更されたかのように見えます。レコードをダイナセットに追加するときにも、同じプロシージャが自動的に使用されます。ミラー化したデータのイメージがOracle Database上の実際のデータと一致していることを確認するために、整合性チェックが実行されます。整合性チェックが実行されるのは、必要な場合(更新の直前など)のみです。

作成およびリフレッシュ操作時に、OraDynasetオブジェクトは、パラメータ名をSQL文のプレースホルダとして使用して、指定されたSQL文に関連する使用可能な入力パラメータをすべて自動的にバインドします。この結果、問合せの動的構築が簡素化され、同じSQL文でWHERE句が異なるような複数の問合せの効率が向上します。

Oracle Objects for OLEを使用する場合、Editメソッドを実行するまで、データにはロックが設定されません。Editメソッドは、"SELECT ...FOR UPDATE"文を使用してダイナセットのカレント・レコードに対するロックを取得しようとします。このロックは、レコードに対するロック設定時間を最短にするように、できるかぎり後に行われます。Editメソッドは、次の理由で失敗する可能性があります。

プロパティ

メソッド


OraFieldオブジェクト

説明

OraFieldオブジェクトは、ダイナセットの行の中にある1つの列またはデータ項目を表します。

備考

OraFieldオブジェクトには、OraDynasetオブジェクトのOraFieldsコレクションからフィールドを取り出すことによって間接的にアクセスします。

現在の行が更新中の場合、OraFieldオブジェクトは現在更新中の値を表します。ただし、現在更新中の値は、まだデータベースに対してコミットされていない可能性があります。

フィールドのValueプロパティにデータを代入できるのは、レコードの編集中(Editメソッドを使用)か、新規レコードの追加中(AddNewメソッドを使用)のみです。これ以外の場合にフィールドのValueプロパティにデータを代入しようとすると、エラーが発生します。

プロパティ

メソッド


OraIntervalDSオブジェクト

説明

OraIntervalDSオブジェクトは、Oracle INTERVAL DAY TO SECONDに関する操作を実行するメソッドを提供します。このデータ型は、期間を日数、時間、分、秒およびナノ秒で表します。

備考

OraIntervalDSオブジェクトは、OraSession.CreateOraIntervalDSメソッドを使用するか、または既存のOraIntervalDSオブジェクトに対してCloneメソッドをコールすると作成されます。

OraIntervalDSオブジェクトは、ServerTypeORATYPE_INTERVALDSを使用してバインドできます。これによって、SQL文またはPL/SQL文のOracle INTERVAL DAY TO SECONDデータ型に関連付けられているパラメータに値をバインドできます。

INTERVAL DAY TO SECONDデータ型に関連付けられている文字列をバインドするときは、ServerTypeを文字列型(例: ORATYPE_VARCHAR2ORATYPE_STRING)に指定し、文字列をDay HH:MI:SSxFFの書式で指定する必要があります。

プロパティ

メソッド


OraIntervalYMオブジェクト

説明

OraIntervalYMオブジェクトは、Oracle INTERVAL YEAR TO MONTHに関する操作を実行するメソッドを提供します。このデータ型は、期間を年数および月数で表します。

備考

OraIntervalYMオブジェクトは、OraSession.CreateOraIntervalYMメソッドを使用するか、または既存のOraIntervalYMオブジェクトに対してCloneメソッドをコールすると作成されます。

OraIntervalYMオブジェクトは、ServerTypeORATYPE_INTERVALYMを使用してバインドできます。これによって、SQL文またはPL/SQL文のOracle INTERVAL YEAR TO MONTHデータ型に関連付けられているパラメータに値をバインドできます。

INTERVAL YEAR TO MONTHデータ型に関連付けられている文字列をバインドするときは、ServerTypeを文字列型(例: ORATYPE_VARCHAR2ORATYPE_STRING)に指定し、文字列をYEARS-MONTHSの書式で指定する必要があります。

プロパティ

メソッド


OraMDAttributeオブジェクト

説明

OraMDAttributeオブジェクトには、個々の属性を記述します。これは、OraMetaDataオブジェクトの属性表のエントリを表します。順序を示す整数を使用する添字を作成するか、または属性の名前を使用することによって、属性にアクセスできます。

備考

なし

プロパティ

メソッド

なし

これらの例で使用されているOraMetaDataスキーマ定義については、「OraMetaDataの例で使用されているスキーマ・オブジェクト」を参照してください。

例: 表の記述

「表の記述例」を参照してください。

例: ユーザー定義型の記述

「例: ユーザー定義型の記述」を参照してください。

例: 不明なスキーマ・オブジェクトの記述

「例: 不明なスキーマ・オブジェクトの記述」を参照してください。


OraMetaDataオブジェクト

説明

OraMetaDataオブジェクトは、OraDatabaseインタフェースのDescribeメソッドをコールすることによって戻されます。Describeメソッドは、emp表などのスキーマ・オブジェクトの名前を取得して、OraMetaDataオブジェクトを戻します。OraMetaDataオブジェクトは、記述されているスキーマ・オブジェクトのすべての属性(OraMDAttributeコレクション)に動的にナビゲートおよびアクセスするメソッドを提供します。

OraMetaDataオブジェクトは、OraMDAttributeオブジェクトのコレクションで、データベース内の特定のスキーマ・オブジェクトに関する記述情報を表します。 次の表は、OraMetaDataオブジェクト型の表(ORAMD_TABLE)の属性の例です。

表9-2に、ORAMD_TABLEの属性を示します。

表9-2 ORAMD_TABLEの属性

属性名 値の型 説明

ObjectID

Integer

オブジェクトID。

NumCols

Integer

列の数。

ColumnList

OraMetaData

列リスト。

IsTyped

ブール

表に入力されたかどうかを示す。

IsTemporary

ブール

一時表かどうかを示す。

Duration

String

期間: セッション、トランザクション、NULLのいずれか。

DBA

Integer

セグメント・ヘッダーのデータ・ブロック・アドレス。

TableSpace

Integer

表が属する表領域。

IsClustered

ブール

表がクラスタ化されているかどうかを示す。

IsPartitioned

ブール

表がパーティション化されているかどうかを示す。

IsIndexOnly

ブール

索引構成表かどうかを示す。


備考

OraMetaDataオブジェクトは、3つの列を含む表として視覚化できます。

順序を示す整数を使用する添字を作成するか、またはプロパティ名を使用することによって、OraMDAttributeオブジェクトに含まれるOraMDAttributeオブジェクトにアクセスできます。コレクションの範囲(0Count-1)外の添字で参照すると、NULLOraMDAttributeオブジェクトが戻ります。

プロパティ

メソッド

これらの例で使用されているOraMetaDataスキーマ定義については、「OraMetaDataの例で使用されているスキーマ・オブジェクト」を参照してください。

次のVisual Basicの例は、この機能の簡単な使用例です。emp表の各種属性を取り出して表示しています。

Set empMD = OraDatabase.Describe("emp")

'Display the name of the Tablespace
msgbox empMD("tablespace")

'Display name, data type, and size of each column in the emp table.
Set empColumnsMD = empMD("Columns")
for I = 1 to empColumns.Count
   Set ColumnMD = empColumnsMD(I)
   MsgBox ColumnMD("Name") & ColumnMD("Data Type") & ColumnMD("Length")
Next I

例: ユーザー定義型の記述

「例: ユーザー定義型の記述」を参照してください。

例: 不明なスキーマ・オブジェクトの記述

「例: 不明なスキーマ・オブジェクトの記述」を参照してください。


OraNumberオブジェクト

説明

OraNumberインタフェースは、Oracle Numberデータ型に関する操作を実行するメソッドを提供します。このインタフェースは、Visual Basicなどの一部のプログラミング環境よりも精度の高い一連の算術操作を公開します。

備考

OraNumberオブジェクトは、OraSessionオブジェクトのCreateOraNumberメソッドを使用するか、または既存のOraNumberオブジェクトに対してCloneメソッドをコールすると取得できます。

数値引数を指定するOraNumberオブジェクトのメソッドはすべて、文字列、別の数値型(Visual Basicのlongなど)、または別のOraNumberオブジェクトを受け入れます。


注意:

Visual Basicの数値(または定数)を引数として使用する場合は、この言語で提供される最大精度に制限されます。

算術操作がコールされるOraNumberでは、(以前の値を上書きして)操作の結果を保持します。(Formatプロパティを介して)書式が指定されている場合、OraNumberの値はこの書式と一致している必要があります。一致していないと、Valueプロパティがアクセスされた時点でエラーが発生します。

プロパティ

メソッド

Oracle Objects for OLEとともにインストールされるサンプルの一部に、科学計算の例を示すプログラムが含まれています。「デモ・スキーマとサンプル・コード」を参照してください。


OraObjectオブジェクト

説明

OraObjectインタフェースは、Oracleの値インスタンス(参照可能でないオブジェクト・インスタンスまたは埋込みオブジェクト)を表します。値インスタンスは、表の列に格納されたOracleオブジェクト型のインスタンス、または別のOracleオブジェクト・インスタンスまたはOracleコレクション要素の属性です。

備考

OraObjectには、値インスタンスの個々の属性にアクセスして操作(更新と挿入)するコレクション・インタフェースが暗黙的に含まれます。添字または属性名を使用すると、個々の属性にアクセスできます。

OraObjectの属性の索引は1から開始します。Countプロパティは、属性の合計数を戻します。値インスタンスの基礎となる各属性は、OraAttributeオブジェクトとして表されます。

属性の値は、変数として取り出されます。属性のVariant型は、オブジェクトの属性の型によって決まります。属性の値にはNULLを使用でき、NULLを設定できます。REF、LOBおよびコレクション型のオブジェクトの場合は、属性の値が、その型に対応するOO4Oオブジェクトとして戻されます。

OraDatabaseオブジェクトのCreateOraObjectメソッドは、OraObjectオブジェクトを戻します。このOraObjectに関連付けられた値インスタンスは、クライアント側のオブジェクト・キャッシュに作成されます。

値インスタンスのメンバー・メソッドの実行方法については、「Oracleオブジェクト・インスタンスのメンバー・メソッドの実行」を参照してください。

OO4Oの値インスタンスを表すOraObjectオブジェクトの初期化方法または値インスタンスのメンバー・メソッドの実行方法については、「Oracle LOB、オブジェクトおよびコレクションのインスタンス化」を参照してください。

プロパティ

メソッド

OraObject/OraRefオブジェクトの例で使用されているスキーマの記述については、「OraObjectおよびOraRefの例で使用されているスキーマ・オブジェクト」を参照してください。

例: OraObjectオブジェクトの属性へのアクセス

次の例では、データベースにあるADDRESSという値インスタンスの属性にアクセスします。

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim Address as OraObject

'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 a dynaset object from person_tab
set OraDynaset = OraDatabase.CreateDynaset("select * from person_tab",0&)

'retrieve a address column from person_tab. Here Value property of OraField
'object returns Address OraObject
set Address = OraDynaset.Fields("Addr").Value

'access the attribute by dot notation
msgbox Address.Street

'access the attribute using '!' notation ( early binding application)
msgbox Address!Street

'access the attribute by index
msgbox Address(1)

'access the attribute by name
msgbox Address("Street")

'access all the attributes of Address OraObject in the dynaset
Do Until OraDynaset.EOF
    For index = 1 To Address.Count
        msgbox Address(index)
    Next Index
OraDynaset.MoveNext
Loop

例: OraObjectオブジェクトの属性の更新

次の例では、データベースにあるADDRESSという値インスタンスの属性を変更します。

ダイナセットの例

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim Address as OraObject

'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 a dynaset object from person_tab
set OraDynaset = OraDatabase.CreateDynaset("select * from person_tab", 0&)

'retrieve a address column from person_tab.
'Here Value property of OraField object returns Address OraObject

set Address = OraDynaset.Fields("Addr").Value

'start the Edit operation and modify the Street attribute
OraDynaset.Edit
Address.Street  =  "Oracle Parkway"
OraDynaset.Update

パラメータの例

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim Address as OraObject

'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 an  OraParameter object represent Address object bind Variable
OraDatabase.Parameters.Add "ADDRESS", Empty, ORAPARM_INPUT, ORATYPE_OBJECT, _
                    "ADDRESS"

'get the uninitialized 'Empty' Address object from OraParameter
set Address = OraDatabase.Parameters("ADDRESS").Value

'modify the 'Street' attribute of the Address
Address.Street = "Oracle Parkway"

'execute the sql statement which updates Address in the person_tab
OraDatabase.ExecuteSQL ("update person_tab set addr = :ADDRESS where age = 40")

例: OraObjectオブジェクトの挿入

次の例では、ADDRESSという新しいフィールド(値インスタンス)をデータベースに挿入します。

ダイナセットの例

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim AddressNew as OraObject

'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 a dynaset object from person_tab
set OraDynaset = OraDatabase.CreateDynaset("select * from person_tab", 0&)

' create a new Address object in OO4O
set AddressNew = OraDatabase.CreateOraObject("ADDRESS")

'initialize the Address object attribute to new value
AddressNew.Street = "Oracle Parkway"
AddressNew.State = "CA"

'start the dynaset AddNew operation and set the Address field to new address
' value
OraDynaset.Addnew
OraDynaset.Fields("ADDR").Value = AddressNew
OraDynaset.Update

OraParameterの例

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim AddressNew as OraObject

'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 an  OraParameter object represent Address object bind Variable
OraDatabase.Parameters.Add "ADDRESS", Null, ORAPARM_INPUT, ORATYPE_OBJECT, _
                     "ADDRESS"

' create a new Address object in OO4O
set AddressNew = OraDatabase.CreateObject("ADDRESS")

'initialize the Address object attribute to new value
AddressNew.Street = "Oracle Parkway"
AddressNew.State = "CA"

'set the Address to ADDRESS parameter
Oradatabase.Parameters("ADDRESS").Value = AddressNew

'execute the sql statement which updates Address in the person_tab
OraDatabase.ExecuteSQL ("insert into person_tab values (30,'Eric',:ADDRESS))


OraParamArrayオブジェクト

説明

OraParamArrayオブジェクトは、OraParameterオブジェクトによって表されるスカラー型のバインド変数とは対照的に、SQL文またはPL/SQLブロック内の配列型のバインド変数を表します。

備考

OraParamArrayオブジェクトは、OraDatabaseオブジェクトのOraParametersコレクションを介して間接的に作成、アクセスおよび削除されます。各パラメータには、識別名および関連付けられた値があります。

OraParamArrayには、配列の個々の要素にアクセスして操作するOLEオートメーション・コレクション・インタフェースが暗黙的に含まれます。 添字またはGet_Valueメソッドを使用すると、個々の要素にアクセスできます。 添字またはPut_Valueメソッドを使用すると、個々の要素を変更できます。

要素の値は、Variant型として取り出されます。要素のVariant型は、OraParamArrayオブジェクトのServerTypeによって決まります。要素の値にはNULLを使用でき、NULLを設定できます。オブジェクト型およびREFの要素の場合は、要素の値が、その型に対応するOO4Oオブジェクトとして戻されます。

オブジェクトの説明に記載されているように、他のオブジェクトのSQL文およびPL/SQL文にパラメータを自動的にバインドできます。バインドするには、パラメータ名をSQL文またはPL/SQL文のプレースホルダとして使用します。このような方法でパラメータを使用すると、動的問合せを簡素化でき、プログラムのパフォーマンスが向上します。パラメータは、実行前にSQL文およびPL/SQLブロックにバインドされます。

OraParametersコレクションは、OraDatabaseオブジェクトの一部であり、すべてのパラメータは、データベース内で(CreateDynasetExecuteSQLまたはCreateSQLメソッドを介して)実行されるSQL文またはPL/SQLブロックで使用できます。SQL文またはPL/SQLブロックの実行前に、関連付けられたOraDatabaseオブジェクトのすべてのパラメータのバインドが試行されます。(特定のSQL文またはPL/SQLブロックにパラメータが適用されないために)失敗したバインドは通知され、そのSQL文またはPL/SQLブロックが未変更のまま再実行された場合、バインドは再試行されません。

SQL文およびPL/SQLブロックはいずれもローカルには解析されないため(すべての解析はOracle Databaseで実行されます)、不要なバインドはパフォーマンス低下の原因となります。不要なパラメータのバインドを防止するには、AutoBindDisableおよびAutoBindEnableメソッドを使用します。

プロパティ

メソッド

例: SQL文でOraParamArraysを使用する方法

次の例では、SQL文でOraParamArrayオブジェクトを使用する方法を示します。

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraSqlStmt As OraSQLStmt
Dim PartNoArray As OraParamArray
Dim DescArray As OraParamArray
Dim I As Integer

'Test case for inserting/updating/deleting multiple rows using parameter

' arrays with SQL statements
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("exampledb", "scott/tiger",  0&)

'Create table
OraDatabase.ExecuteSQL ("create table part_nos(partno number," & _
                         "description char(50), primary key(partno))")
OraDatabase.Parameters.AddTable "PARTNO", ORAPARM_INPUT, ORATYPE_NUMBER, 10, 22
OraDatabase.Parameters.AddTable "DESCRIPTION", ORAPARM_INPUT, _
                           ORATYPE_CHAR, 10, 50
Set PartNoArray = OraDatabase.Parameters("PARTNO")
Set DescArray = OraDatabase.Parameters("DESCRIPTION")

 'Initialize arrays
For I = 0 To 9
  achar = "Description" + Str(I)
  PartNoArray(I) = 1000 + I
  DescArray(I) = achar
Next I
Set OraSqlStmt = OraDatabase.CreateSql("insert into
part_nos(partno, description) values(:PARTNO,:DESCRIPTION)", 0&)

'Update the newly created part_nos table
For I = 0 To 9
  achar = "Description" + Str(1000 + I)
  DescArray(I) = achar
Next I

'Update table
Set OraSqlStmt = OraDatabase.CreateSql("update part_nos set DESCRIPTION" & _
                           "=:DESCRIPTION where PARTNO = :PARTNO", 0&)

'Deleting rows
Set OraSqlStmt = OraDatabase.CreateSql("delete  from  part_nos where" & _
                           "DESCRIPTION=: Description ", 0&)

'Drop the table
OraDatabase.ExecuteSQL ("drop table part_nos")

例: PL/SQLでOraParamArraysを使用する方法

次の例では、PL/SQLでOraParamArrayオブジェクトを使用する方法を示します。Employee PL/SQLパッケージは、ORAEXAMP.SQLスクリプトを使用して設定できます。「デモ・スキーマとサンプル・コード」を参照してください。

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim EmpnoArray As OraParamArray
Dim EnameArray As OraParamArray

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("exampledb", "scott/tiger", 0&)
OraDatabase.Parameters.Add "ArraySize", 3, ORAPARM_INPUT
OraDatabase.Parameters.AddTable "EMPNOS", ORAPARM_INPUT, ORATYPE_NUMBER,3, 22
OraDatabase.Parameters.AddTable "ENAMES", ORAPARM_OUTPUT, _
                                 ORATYPE_VARCHAR2, 3, 10
Set EmpnoArray = OraDatabase.Parameters("EMPNOS")
Set EnameArray = OraDatabase.Parameters("ENAMES")

'Initialize the newly created input parameter table EMPNOS
EmpnoArray(0) = 7698
EmpnoArray(1) = 7782
EmpnoArray(2) = 7654

'Execute the PLSQL package
OraDatabase.ExecuteSQL ("Begin Employee.GetEmpNamesInArray(:ArraySize," & _
                         ":EMPNOS, :ENAMES); End;")
'Print out Enames
MsgBox EnameArray(0)
MsgBox EnameArray(1)
MsgBox EnameArray(2)

OraParameterオブジェクト

説明

OraParameterオブジェクトは、SQL文またはPL/SQLブロックのバインド変数を表します。

備考

OraParameterオブジェクトは、OraDatabaseオブジェクトのOraParametersコレクションを介して間接的に作成、アクセスおよび削除されます。各パラメータには、識別名および関連付けられた値があります。オブジェクトの説明に記載されているように、他のオブジェクトのSQL文およびPL/SQL文にパラメータを自動的にバインドできます。バインドするには、パラメータ名をSQL文またはPL/SQL文のプレースホルダとして使用します。このような方法でパラメータを使用すると、動的問合せを簡素化でき、プログラムのパフォーマンスが向上します。

パラメータは、実行前にSQL文およびPL/SQLブロックにバインドされます。SQL SELECT文の場合は、ダイナセットの作成前にバインドが発生します。

OraParametersコレクションは、OraDatabaseオブジェクトの一部です。したがって、すべてのパラメータは、データベース内で(CreateDynasetまたはExecuteSQLメソッドを介して)実行されるSQL文またはPL/SQLブロックで使用できます。

SQL文またはPL/SQLブロックの実行前に、関連付けられたOraDatabaseオブジェクトのすべてのパラメータのバインドが試行されます。(特定のSQL文またはPL/SQLブロックにパラメータが適用されないために)失敗したバインドは通知され、そのSQL文またはPL/SQLブロックが未変更のまま再実行された場合、バインドは再試行されません。

SQL文およびPL/SQLブロックはいずれもローカルには解析されないため(すべての解析はOracle Databaseで実行されます)、不要なバインドはパフォーマンス低下の原因となります。不要なパラメータのバインドを防止するには、AutoBindDisableおよびAutoBindEnableメソッドを使用します。

ServerTypeCHARおよびVARCHAR2であるORAPARM_OUTPUT変数の最大サイズは、デフォルトで127バイトに設定されます。この値を変更するには、MinimumSizeプロパティを使用します。 CHARVARCHAR2およびORATYPE_RAW_BINに対するORAPARM_OUTPUT変数の最小サイズは、データベースの列から予測されるデータのサイズより常に大きい値に設定する必要があります。

Oracle Raw型の列にバインドする場合は、ServerTypeORATYPE_RAW_BINを使用します。値の設定または取得には、バイト配列を使用します。 ORATYPE_RAW_BINバインド・バッファの最大許容サイズは、表の列にバインドする場合は2000バイト、ストアド・プロシージャにバインドする場合は32KBです。 コード例は、ORACLE_BASE\ORACLE_HOME\OO4O\VB\Rawディレクトリにあるサンプルを参照してください。

プロパティ

メソッド


OraRefオブジェクト

説明

OraRefインタフェースは、参照可能オブジェクト(スタンドアロン・インスタンス)に加え、Oracle REF(参照)を表します。

備考

Oracle REFは参照可能オブジェクトへの識別子です。参照可能オブジェクトはオブジェクト表の行に格納されます。REFを確保することにより、参照可能オブジェクトがクライアント側にフェッチされます。参照可能オブジェクトの属性が最初にアクセスされる時点で、OraRefオブジェクトが基礎となるREFを暗黙的に確保します。また、OraRefは、複合オブジェクト検索機能(COR)を利用するオブジェクト・ナビゲーショナル操作の機能をカプセル化します。

OraRefオブジェクトで表される参照可能オブジェクトの属性は、OraObjectインタフェースで表される値インスタンスの属性にアクセスする場合と同様の方法でアクセスします。確保される時点で、COMの包含機構を介して、OraRefOraObjectインタフェースが組み込まれます。実行時点で、OraRefインタフェースは、OraObjectインタフェースに型変換されます。

OraRefは、ダイナセット、パラメータなど、基礎となるコンテキストの影響を受けない参照可能オブジェクトでの更新および削除操作用のメソッドを提供します。

参照可能オブジェクトの属性を変更する前に、オブジェクト・レベルでロックを取得してください。これはOraRefオブジェクトのEditメソッドを使用して行います。

OraDatabaseオブジェクトのCreateOraObjectメソッドは、新しい参照可能オブジェクトをデータベースに作成し、OraRefオブジェクトに関連付けられた情報を戻します。CreateOraObjectおよびUpdateメソッドのペアは、新しい参照可能オブジェクトをデータベースに挿入します。

OO4Oの参照可能オブジェクトを表すOraRefオブジェクトの初期化方法または参照可能オブジェクトのメンバー・メソッドの実行方法については、「Oracle LOB、オブジェクトおよびコレクションのインスタンス化」を参照してください。

プロパティ

メソッド

サンプル・コードを実行する前に、必要なデータ型と表がデータベース内にあることを確認してください。OraObject/OraRefの例で使用されているスキーマの記述については、「OraObjectおよびOraRefの例で使用されているスキーマ・オブジェクト」を参照してください。

例: REF値の確保

次の例では、データベースにあるPERSONという参照可能オブジェクトの属性を確保します。

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim Person as OraRef

'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 a dynaset object from customers
set OraDynaset = OraDatabase.CreateDynaset("select * from customers", 0&)

'retrieve a aperson column from customers. Here Value property of
' OraField object returns Person OraRef
set Person = OraDynaset.Fields("aperson").Value

'access the attribute of person. This operation pins the Person ref
'value and fetches the Person referenceable object to the client.
msgbox Person.Name

例: 属性値へのアクセス

次の例では、データベースにあるPERSONという参照可能オブジェクトの属性にアクセスします。

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim Person as OraRef
Dim Address as OraObject

'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 a dynaset object from customers
set OraDynaset = OraDatabase.CreateDynaset("select * from customers", 0&)

'retrieve a aperson column from customers. Here Value property of OraField
'object returns Person OraRef
set Person = OraDynaset.Fields("aperson").Value

'access the attribute by dot notation.
msgbox Person.Name

'access the attribute using '!' notation ( early binding application)
msgbox Person!Name

'access the attribute by index
msgbox Person(1)

'access the attribute by name
msgbox Person("Name")

'access Addr attribute . This returns Address OraObject.
set Address = Person.Addr

例: 属性値の更新

次の例では、データベースにあるPERSONという参照可能オブジェクトの属性を更新します。

ダイナセットの例

「属性値の更新: ダイナセットの例」を参照してください。

パラメータの例

「属性値の更新: パラメータの例」を参照してください。

例: 参照可能オブジェクトの挿入

次の例では、PERSONという新しい参照可能オブジェクトをデータベースに挿入します。

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim Person  as OraRef

'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&)

'CreateOraObject   creates a new referenceable object in the PERSON_TAB object
'table and returns associated OraRef
set Person = OraDatabase.CreateOraObject("PERSON","PERSON_TAB")

'modify the attributes of Person
Person.Name = "Eric"
Person.Age = 35

'Update method inserts modified referenceable object in the PERSON_TAB.
Person.Update


OraServerオブジェクト

説明

OraServerインタフェースは、Oracleデータベースへの物理的なネットワーク接続を表します。

備考

OraServerインタフェースは、Oracle Call Interfaceで提供される接続多重化機能を公開します。OraServerオブジェクトが作成されると、OpenDatabaseメソッドをコールして複数のユーザー・セッション(OraDatabase)がこのオブジェクトに接続できます。この機能は、Internet Information Server(IIS)など、複数の層を介する分散環境でOracle Objects for OLEを使用するアプリケーション・コンポーネントには、特に有効です。多数のアクティブなユーザー・セッションがあるOracleデータベースにアクセスする場合に接続多重化を使用すると、データベースの拡張性を改善すると同時に、サーバーでの処理およびリソース所要量の軽減に役立ちます。

図9-1に示すように、OraServerインタフェースにはOracleデータベースへの接続が含まれ、そのデータベース接続でユーザー・セッション(OpenDatabaseオブジェクト)を作成するメソッド(OraDatabase)を提供します。

図9-1 OraServerとOracle Databaseの関係

OraServerからOracleサーバーへの接続
「図9-1 OraServerとOracle Databaseの関係」の説明

プロパティ

メソッド


OraSessionオブジェクト

説明

OraSessionオブジェクトは、アプリケーション内で使用されるOraDatabaseOraConnectionおよびOraDynasetオブジェクトのコレクションを管理します。

備考

通常、アプリケーションごとに1つのOraSessionオブジェクトが作成されますが、アプリケーション内外で共有使用するための名前付きOraSessionオブジェクトを複数作成できます。

OraSessionオブジェクトは、アプリケーションの最上位レベルのオブジェクトです。OraSessionおよびOraServerオブジェクトは、Visual BasicまたはVisual Basic for Applications APIのCreateObjectによってのみ作成されるオブジェクトで、Oracle Objects for OLEメソッドでは作成されません。

プロパティ

メソッド

次に示すコード部分では、OraSessionオブジェクトの作成方法を示します。

Dim oo4oSession as Object
Set oo4oSession = CreateObject("OracleInProcServer.XOraSession")

または

Dim oo4oSession as New OraSessionClass

または

Dim oo4oSession as OraSession
Set oo4oSession = New OraSessionClass


OraSQLStmtオブジェクト

説明

OraSQLStmtオブジェクトは、単一のSQL文を表します。CreateSQLメソッドを使用して、OraDatabaseオブジェクトからOraSQLStmtオブジェクトを作成します。

作成およびリフレッシュ操作時に、OraSQLStmtオブジェクトは、パラメータ名をSQL文のプレースホルダとして使用して、指定されたSQL文に関連する使用可能な入力パラメータをすべて自動的にバインドします。これによって、SQL文を再度解析する必要がないため、SQL文の実行パフォーマンスが向上します。

プロパティ

メソッド


OraSubscriptionオブジェクト

説明

OraSubscriptionオブジェクトは、データベース・イベントのサブスクリプションを表します。

備考

OraSubscriptionオブジェクトは、OraDatabaseオブジェクトのOraSubscriptionsコレクションを介して間接的に作成、アクセスおよび削除されます。各サブスクリプションには、Oracleデータベース・イベントに関連付けられた名前があります。

OraSubscriptionsコレクションは、OraDatabaseオブジェクトの一部です。

プロパティ

メソッド


OraTimeStampオブジェクト

説明

OraTimeStampオブジェクトは、Oracle TIMESTAMPおよびOracle TIMESTAMP WITH LOCAL TIME ZONEデータ型を表し、この2つのデータ型に関する操作を実行するメソッドを提供します。OraTimeStampは、年、日、時、分、秒およびナノ秒の情報を格納する日時値を表します。

備考

OraTimeStampオブジェクトは、OraSession.OraCreateTimeStampメソッドを使用するか、または既存のOraTimeStampオブジェクトに対してCloneメソッドをコールすると作成されます。

OraTimeStampオブジェクトは、ServerTypeORATYPE_TIMESTAMPまたはORATYPE_TIMESTAMPLTZを使用してバインドできます。これによって、SQL文またはPL/SQL文のOracle TIMESTAMPまたはOracle TIMESTAMP WITH LOCAL TIME ZONEデータ型にそれぞれ関連付けられているパラメータに値をバインドできます。

TIMESTAMPまたはTIMESTAMP WITH LOCAL TIME ZONEデータ型に関連付けられている文字列をバインドするときは、ServerTypeを文字列型(例: ORATYPE_VARCHAR2ORATYPE_STRING)に指定し、文字列をNLS_TIMESTAMP_FORMATの書式で指定する必要があります。

プロパティ

メソッド


OraTimeStampTZオブジェクト

説明

OraTimeStampTZオブジェクトは、Oracle TIMESTAMP WITH TIME ZONEデータ型を表し、このOracleデータ型に関する操作を実行するメソッドを提供します。OraTimeStampTZは、年、日、時、分、秒およびナノ秒およびタイムゾーンの情報を格納する特定のタイムゾーンの日時値を表します。

備考

OraTimeStampTZオブジェクトは、OraSession.OraCreateTimeStampTZメソッドを使用するか、または既存のOraTimeStampTZオブジェクトに対してCloneメソッドをコールすると作成されます。

OraTimeStampTZオブジェクトは、ServerTypeORATYPE_TIMESTAMPTZを使用してバインドできます。これによって、SQL文またはPL/SQL文のOracle TIMESTAMP WITH TIME ZONEデータ型に関連付けられているパラメータに値をバインドできます。

TIMESTAMP WITH TIME ZONEデータ型に関連付けられている文字列をバインドするときは、ServerTypeを文字列型(例: ORATYPE_VARCHAR2ORATYPE_STRING)に指定し、文字列をNLS_TIMESTAMP_TZ_FORMATの書式で指定する必要があります。

プロパティ

メソッド


OraConnectionsコレクション

説明

OraConnectionsコレクションは、OraConnectionオブジェクトのリストを維持します。このリストは変更できません。つまり、このコレクションに対する追加または削除はできません。

備考

このコレクション内のOraConnectionオブジェクトにアクセスするには、添字(順序を示す整数を使用)を作成するか、またはオブジェクトの作成時に指定した名前を使用します。Countプロパティを使用すると、コレクション内のOraConnectionオブジェクトの数を取得できます。コレクションの範囲(0Count-1)外の添字で参照すると、NULLOraConnectionオブジェクトが戻ります。

プロパティ

メソッド

なし


OraFieldsコレクション

説明

OraFieldsコレクションは、OraFieldオブジェクトのリストを維持します。このリストは変更できません。つまり、このコレクションに対する追加または削除はできません。

備考

このコレクション内のOraFieldオブジェクトにアクセスするには、添字(順序を示す整数を使用)を作成するか、またはオブジェクトの作成時に指定した名前を使用します。Countプロパティを使用すると、コレクション内のOraFieldオブジェクトの数を取得できます。コレクションの範囲(0Count-1)外の添字で参照すると、NULLOraFieldオブジェクトが戻ります。

プロパティ

メソッド


OraParametersコレクション

説明

OraParametersコレクションは、OraParameterオブジェクトのリストを維持します。他のコレクション・オブジェクトとは異なり、このリストは変更できます。つまり、このコレクションに対する追加および削除ができます。

備考

このコレクション内のOraParameterオブジェクトにアクセスするには、添字(順序を示す整数を使用)を作成するか、またはオブジェクトの作成時に指定した名前を使用します。Countプロパティを使用すると、コレクション内のOraParameterオブジェクトの数を取得できます。コレクションの範囲(0Count-1)外の添字で参照すると、NULLOraParameterオブジェクトが戻ります。

コレクションのOraParameterオブジェクトへのアクセスに加えて、このコレクションでは、AddおよびRemoveメソッドを使用してパラメータを作成および破棄できます。

プロパティ

メソッド


OraSessionsコレクション

説明

OraSessionsコレクションは、OraSessionオブジェクトのリストを維持します。このリストは変更できません。つまり、このコレクションに対する追加または削除はできません。

備考

このコレクション内のOraSessionオブジェクトにアクセスするには、添字(順序を示す整数を使用)を作成するか、またはオブジェクトの作成時に指定した名前を使用します。Countプロパティを使用すると、コレクション内のOraSessionオブジェクトの数を取得できます。コレクションの範囲(0Count-1)外の添字で参照すると、NULLOraSessionオブジェクトが戻ります。

プロパティ

メソッド

なし


OraSubscriptionsコレクション

説明

OraSubscriptionsコレクションは、データベース・イベントのサブスクリプションを表すOraSubscriptionオブジェクトのリストを維持します。他のコレクション・オブジェクトとは異なり、このリストは変更できます。つまり、このコレクションに対する追加および削除ができます。

備考

このコレクション内のOraSubscriptionオブジェクトにアクセスするには、添字(順序を示す整数を使用)を作成するか、またはオブジェクトの作成時に指定した名前を使用します。Countプロパティを使用すると、コレクション内のOraSubscriptionオブジェクトの数を取得できます。コレクションの範囲(0Count-1)外の添字で参照すると、NULLOraSubscriptionオブジェクトが戻ります。

コレクションのOraSubscriptionオブジェクトへのアクセスに加えて、このコレクションでは、AddおよびRemoveメソッドを使用してサブスクリプションを作成および破棄できます。

プロパティ

メソッド