この章では、Oracle Objects for OLEのサーバー・オブジェクトについて説明します。
内容は次のとおりです。
説明
OraAQ
オブジェクトは、OraDatabase
インタフェースのCreateAQ
メソッドをコールすることによってインスタンス化されます。このオブジェクトは、データベース内のキューを表します。
備考
Oracle Objects for OLEは、Oracle Databaseのアドバンスト・キューイング(AQ)機能にアクセスするインタフェースを提供します。これにより、Visual Basicなどの一般的なCOMベースの開発環境からAQにアクセスできるようにします。
OraAQ
オートメーション・インタフェースは、メッセージ(OraAQMsg
オブジェクトにカプセル化されている)をエンキューおよびデキューするメソッドを提供します。着信メッセージのキューを監視するメソッドも提供します。
クライアント・アプリケーションには、モニターへのDispatch
インタフェースがあります。このモニターは、アプリケーションの基準を満たしているメッセージのキューをチェックします。次に、モニターは、これらのメッセージがデキューされると、Dispatch
インタフェースのNotifyMe
メソッドをコールします。
次の図は、OO4O AQオートメーション・オブジェクトとそのプロパティを示したものです。
プロパティ
メソッド
例
例: メッセージのエンキュー
RAW型のメッセージのエンキュー
Oracleオブジェクト型のメッセージのエンキュー
例: メッセージのデキュー
注意: 次のサンプル・コードは、メッセージ・デキューの標準的な例です。
完全なAQサンプルは、\OO4O\VB\SAMPLES\AQ
にあります。
RAW型のメッセージのデキュー
Oracleオブジェクト型のメッセージのデキュー
例: メッセージの監視
MonitorStart
とMonitorStop
メソッドの使用例は、「メッセージの監視」を参照してください。
説明
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
オブジェクトは、エンキューまたはデキューされたメッセージをカプセル化します。メッセージは、ユーザー定義型またはRAW型にできます。
プロパティ
メソッド
説明
OraAttribute
オブジェクトは、OraObject
またはOraRef
のValue
またはREF
インスタンスの属性を表します。
備考
OraAttribute
オブジェクトは、順序を示す整数を使用する添字を作成するか、または名前属性を使用することによって、OraObject
またはOraRef
オブジェクトからアクセスできます。
OraAttribute
オブジェクトのValue
プロパティの属性の型および戻り値を識別する表は、Value
(OraAttribute
)プロパティを参照してください。
プロパティ
メソッド
なし
例
次の例では、サーバー内の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
説明
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
説明
OO4OのOraBLOB
とOraCLOB
インタフェースは、データベース内のラージ・オブジェクト・データ型BLOB
、CLOB
およびNCLOB
に関する操作を実行するメソッドを提供します。このマニュアルでは、BLOB
、CLOB
およびNCLOB
のデータ型をLOBデータ型とも呼びます。
OO4Oでは、一時BLOB
またはCLOB
型の作成をサポートしています。これらの型を操作してSQL文やPL/SQLブロックにバインドしたり、永続LOBにコピーできます。
備考
LOBデータへのアクセスには、Read
およびCopyToFile
メソッドを使用します。
LOBデータの変更には、Write
、Append
、Erase
、Trim
、Copy
、CopyFromFile
および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つの操作モードがあります。
複数ピースの読取り/書込み操作
このモードでは、読取りまたは書込みデータ量の合計が、個々の読取り/書込み操作に使用するバッファのサイズよりも大きくなります。操作ごとに完全なラウンドトリップを行わず、複数のピースがストリーム化されます。複数ピースの操作を開始するには、最初にPollingAmount
プロパティを、読取り/書込みデータ量の合計に設定します。この時点でOffset
プロパティを設定して、最初のピースの読取り/書込み操作に対する初期オフセットを指定します。このオフセットは、最初の読取り/書込み操作後は自動的に増分され、複数ピース操作が完了するまで変更できません。各ピース単位の操作の正常な実行については、Status
プロパティをチェックする必要があります。この操作は、すべてのピースの読取り/書込みが終了するまで続行する必要があります(強制終了はできません)。同じLOBで別の複数ピースの読取り/書込み操作を開始するには、PollingAmount
プロパティを必要な量に再設定する必要があります。「例: LOBの複数ピース読取り」を参照してください。
単一ピースの読取り/書込み操作
このモードでは、データの読取りと書込みが1回の操作で発生します。このモードは、PollingAmount
プロパティを0
に設定すると使用可能になります。「例: LOBの単一ピース読取り」を参照してください。
両方の操作モードとも、Offset
プロパティは、1を基準とします。
設計上、LOBは、SELECT
..
FOR
UPDATE
、INSERT
およびUPDATE
文で開始した複数のトランザクションにまたがることはできません。これらのSQL文を使用してLOB値を選択または変更すると、現行のトランザクション外では、LOBが無効になります。Oracle Objects for OLEでは、トランザクションは次の方法で開始および終了できます。
Dynaset
Edit
/Update
メソッド
Edit
メソッドはSELECT
FOR
UPDATE
文を実行し、行をロックしてトランザクションを開始します。Update
メソッドはトランザクションを終了します。LOB列の値がEdit
とUpdate
のペアの間で変更された場合、OO4Oは、Update
コールの後でLOB列の値を再選択します。この再選択は、ユーザーに対して透過的に実行されます。LOBがOracleオブジェクト・インスタンスの属性またはOracleコレクションの要素である場合、OO4OはLOB値の再選択を実行しません。トランザクションがOraSession
/OraDatabase
またはOraServer
オブジェクトで開始され、LOBデータがEdit
メソッドとUpdate
メソッドの間で変更された場合、OO4OはデータベースからLOB値を再選択しません。LOBが無効となるのは、OraSession
/OraDatabase
またはOraServer
オブジェクトで開始されたトランザクションをコミットした後です。
「例: LOBを含むダイナセットとトランザクション」を参照してください。
ExecuteSQL
またはCreateSQL
メソッドを介したINSERT
またはUPDATE
文の実行
トランザクションは、INSERT
またはUPDATE
文によって開始され、Oracle Objects for OLEによって暗黙的に終了されます(自動コミット)。文にLOB出力バインド・パラメータが含まれている場合は、RETURNING
..
INTO
句と同様に、その文は、ExecuteSQL
またはCreateSQL
メソッドの実行後に無効となります。これを回避するには、これらの文をOraSession
、OraServer
またはOraDatabase
オブジェクトのBeginTrans
/CommitTrans
ペアの間に実行してください。
「例: LOBを使用するINSERTまたはUPDATE文とトランザクション」を参照してください。
関連項目:
|
プロパティ
メソッド
例
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
オブジェクトはワークステーションのドメインを定義します。このワークステーションのすべてのOraSession
オブジェクトは、OraClient
オブジェクトのOraSessions
コレクションにリストされます。
備考
各ワークステーションに存在するOraClient
オブジェクトは1つのみで、必要な場合はシステムによって自動的に作成されます。
プロパティ
メソッド
説明
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 要素の型と要素の戻り値
要素の型 | 要素の値 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
要素の値は、SafeArray
プロパティを使用して、Variant
型のSAFEARRAY
形式に変換されます。サポートの対象は、基本的な型の要素のみです。Variant
型SAFEARRAY
の索引は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
オブジェクトは、Oracleデータベースへの単一の接続を表します。
備考
OraConnection
オブジェクトは、セッション内でOraDatabase
オブジェクトがインスタンス化されるたびに自動的に作成され、接続を使用しているすべてのデータベースが破棄されると自動的に破棄されます。
現在、OraConnection
オブジェクトを明示的に作成する方法はありません。接続を必要とするOraDatabase
オブジェクトを作成することによって自動的に作成されます。
プロパティ
メソッド
説明
OraDatabase
インタフェースは、Oracleデータベースに対するユーザー・セッションを表し、SQLとPL/SQLを実行するメソッドを提供します。
備考
Oracle8i以上のリリースでのOraDatabase
インタフェースには、トランザクションを制御し、Oracleオブジェクト型のインスタンスを表すインタフェースを作成するためのメソッドが追加されました。スキーマ・オブジェクトの属性は、このOraDatabase
インタフェースのDescribe
メソッドを使用して取り出すことができます。
以前のリリースでは、OraDatabase
オブジェクトは、OraSession
インタフェースのOpenDatabase
メソッドをコールすることによって作成されていました。このメソッドの引数には、ネットワークの別名、ユーザー名およびパスワードが渡されます。Oracle8i以上のリリースでは、このメソッドのコールによってOraServer
オブジェクトが暗黙的に作成されます。
OraServer
インタフェースで説明したように、OraDatabase
オブジェクトは、OraServer
インタフェースのOpenDatabase
メソッドを使用して作成することもできます。
トランザクション制御メソッドは、OraDatabase
(ユーザー・セッション)レベルで使用できます。次のメソッドが含まれます。
BeginTrans
CommitTrans
Rollback
次に、例を示します。
MyDatabase.BeginTrans MyDatabase.ExecuteSQL("delete from emp where empno = 1234") MyDatabase.CommitTrans
注意: AutoCommit プロパティがTRUE に設定されている場合は、トランザクションは自動的にコミットされるため、トランザクション制御メソッドを使用する必要はありません。 |
プロパティ
メソッド
説明
OraDynaset
オブジェクトは、SQL SELECT
文から作成されたデータの参照と更新を許可します。
備考
OraDynaset
オブジェクトは、SQL SELECT
問合せの結果セットまたはストアド・プロシージャやファンクションから戻ったPL/SQLカーソル変数を表します。このオブジェクトは本来、クライアント側でスクロールおよび更新できるカーソルで、実行した問合せで生成された行セットを参照できます。このオブジェクトは、OraDatabase
インタフェースのCreateDynaset
またはCreateCustomDynaset
メソッドによって作成されます。OraDynaset
オブジェクトを使用すると、VARRAY
、ネストした表、Object
、REF
、LOBとBFILE
型などのリレーショナルおよびオブジェクト・リレーショナル列のインスタンスが含まれた結果セットをスクロールできます。
このオブジェクトは、更新などのデータベース操作を透過的にミラー化します。Update
メソッドを介してデータが更新されると、問合せのローカル・ミラー・イメージが更新されるため、問合せを再評価せずにデータが変更されたかのように見えます。レコードをダイナセットに追加するときにも、同じプロシージャが自動的に使用されます。ミラー化したデータのイメージがOracle Database上の実際のデータと一致していることを確認するために、整合性チェックが実行されます。整合性チェックが実行されるのは、必要な場合(更新の直前など)のみです。
作成およびリフレッシュ操作時に、OraDynaset
オブジェクトは、パラメータ名をSQL文のプレースホルダとして使用して、指定されたSQL文に関連する使用可能な入力パラメータをすべて自動的にバインドします。この結果、問合せの動的構築が簡素化され、同じSQL文でWHERE
句が異なるような複数の問合せの効率が向上します。
Oracle Objects for OLEを使用する場合、Edit
メソッドを実行するまで、データにはロックが設定されません。Edit
メソッドは、"SELECT
...
FOR
UPDATE"
文を使用してダイナセットのカレント・レコードに対するロックを取得しようとします。このロックは、レコードに対するロック設定時間を最短にするように、できるかぎり後に行われます。Edit
メソッドは、次の理由で失敗する可能性があります。
SQLの問合せがOracle SQLの更新規則に違反している(たとえば、計算済の列や表の結合を使用した場合)。
ロックの取得に必要な権限がユーザーにない。
他のユーザーがそのレコードをすでにロックしている。OpenDatabase
メソッドには、ロックを待機するかどうかを決定できるオプションがあります。
プロパティ
メソッド
説明
OraField
オブジェクトは、ダイナセットの行の中にある1つの列またはデータ項目を表します。
備考
OraField
オブジェクトには、OraDynaset
オブジェクトのOraFields
コレクションからフィールドを取り出すことによって間接的にアクセスします。
現在の行が更新中の場合、OraField
オブジェクトは現在更新中の値を表します。ただし、現在更新中の値は、まだデータベースに対してコミットされていない可能性があります。
フィールドのValue
プロパティにデータを代入できるのは、レコードの編集中(Edit
メソッドを使用)か、新規レコードの追加中(AddNew
メソッドを使用)のみです。これ以外の場合にフィールドのValue
プロパティにデータを代入しようとすると、エラーが発生します。
プロパティ
メソッド
説明
OraIntervalDS
オブジェクトは、Oracle INTERVAL
DAY
TO
SECOND
に関する操作を実行するメソッドを提供します。このデータ型は、期間を日数、時間、分、秒およびナノ秒で表します。
備考
OraIntervalDS
オブジェクトは、OraSession.CreateOraIntervalDS
メソッドを使用するか、または既存のOraIntervalDS
オブジェクトに対してClone
メソッドをコールすると作成されます。
OraIntervalDS
オブジェクトは、ServerType
にORATYPE_INTERVALDS
を使用してバインドできます。これによって、SQL文またはPL/SQL文のOracle INTERVAL
DAY
TO
SECOND
データ型に関連付けられているパラメータに値をバインドできます。
INTERVAL
DAY
TO
SECOND
データ型に関連付けられている文字列をバインドするときは、ServerType
を文字列型(例: ORATYPE_VARCHAR2
、ORATYPE_STRING
)に指定し、文字列をDay HH:MI:SSxFFの書式で指定する必要があります。
プロパティ
メソッド
説明
OraIntervalYM
オブジェクトは、Oracle INTERVAL
YEAR
TO
MONTH
に関する操作を実行するメソッドを提供します。このデータ型は、期間を年数および月数で表します。
備考
OraIntervalYM
オブジェクトは、OraSession.CreateOraIntervalYM
メソッドを使用するか、または既存のOraIntervalYM
オブジェクトに対してClone
メソッドをコールすると作成されます。
OraIntervalYM
オブジェクトは、ServerType
にORATYPE_INTERVALYM
を使用してバインドできます。これによって、SQL文またはPL/SQL文のOracle INTERVAL
YEAR
TO
MONTH
データ型に関連付けられているパラメータに値をバインドできます。
INTERVAL
YEAR
TO
MONTH
データ型に関連付けられている文字列をバインドするときは、ServerType
を文字列型(例: ORATYPE_VARCHAR2
、ORATYPE_STRING
)に指定し、文字列をYEARS-MONTHSの書式で指定する必要があります。
プロパティ
メソッド
説明
各OraMDAttribute
オブジェクトには、個々の属性を記述します。これは、OraMetaData
オブジェクトの属性表のエントリを表します。順序を示す整数を使用する添字を作成するか、または属性の名前を使用することによって、属性にアクセスできます。
備考
なし
プロパティ
メソッド
なし
例
これらの例で使用されているOraMetaData
スキーマ定義については、「OraMetaDataの例で使用されているスキーマ・オブジェクト」を参照してください。
例: 表の記述
「表の記述例」を参照してください。
例: ユーザー定義型の記述
「例: ユーザー定義型の記述」を参照してください。
例: 不明なスキーマ・オブジェクトの記述
「例: 不明なスキーマ・オブジェクトの記述」を参照してください。
説明
OraMetaData
オブジェクトは、OraDatabase
インタフェースのDescribe
メソッドをコールすることによって戻されます。Describe
メソッドは、emp
表などのスキーマ・オブジェクトの名前を取得して、OraMetaData
オブジェクトを戻します。OraMetaData
オブジェクトは、記述されているスキーマ・オブジェクトのすべての属性(OraMDAttribute
コレクション)に動的にナビゲートおよびアクセスするメソッドを提供します。
OraMetaData
オブジェクトは、OraMDAttribute
オブジェクトのコレクションで、データベース内の特定のスキーマ・オブジェクトに関する記述情報を表します。 次の表は、OraMetaData
オブジェクト型の表(ORAMD_TABLE
)の属性の例です。
表9-2に、ORAMD_TABLE
の属性を示します。
表9-2 ORAMD_TABLEの属性
属性名 | 値の型 | 説明 |
---|---|---|
|
|
オブジェクトID。 |
|
|
列の数。 |
|
|
列リスト。 |
|
ブール |
表に入力されたかどうかを示す。 |
|
ブール |
一時表かどうかを示す。 |
|
|
期間: セッション、トランザクション、NULLのいずれか。 |
|
|
セグメント・ヘッダーのデータ・ブロック・アドレス。 |
|
|
表が属する表領域。 |
|
ブール |
表がクラスタ化されているかどうかを示す。 |
|
ブール |
表がパーティション化されているかどうかを示す。 |
|
ブール |
索引構成表かどうかを示す。 |
備考
OraMetaData
オブジェクトは、3つの列を含む表として視覚化できます。
メタデータ属性名
メタデータ属性値
Value
が別のOraMetaData
オブジェクトであるかどうかを示すフラグ
順序を示す整数を使用する添字を作成するか、またはプロパティ名を使用することによって、OraMDAttribute
オブジェクトに含まれるOraMDAttribute
オブジェクトにアクセスできます。コレクションの範囲(0
〜Count-1
)外の添字で参照すると、NULL
のOraMDAttribute
オブジェクトが戻ります。
プロパティ
メソッド
例
これらの例で使用されている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
インタフェースは、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
インタフェースは、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
オブジェクトは、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
オブジェクトの一部であり、すべてのパラメータは、データベース内で(CreateDynaset
、ExecuteSQL
または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
オブジェクトは、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
メソッドを使用します。
ServerType
がCHAR
およびVARCHAR2
であるORAPARM_OUTPUT
変数の最大サイズは、デフォルトで127バイトに設定されます。この値を変更するには、MinimumSize
プロパティを使用します。 CHAR
、VARCHAR2
およびORATYPE_RAW_BIN
に対するORAPARM_OUTPUT
変数の最小サイズは、データベースの列から予測されるデータのサイズより常に大きい値に設定する必要があります。
Oracle Raw
型の列にバインドする場合は、ServerType
にORATYPE_RAW_BIN
を使用します。値の設定または取得には、バイト配列を使用します。 ORATYPE_RAW_BIN
バインド・バッファの最大許容サイズは、表の列にバインドする場合は2000バイト、ストアド・プロシージャにバインドする場合は32KBです。 コード例は、ORACLE_BASE\ORACLE_HOME
\OO4O\VB\Raw
ディレクトリにあるサンプルを参照してください。
プロパティ
メソッド
説明
OraRef
インタフェースは、参照可能オブジェクト(スタンドアロン・インスタンス)に加え、Oracle REF
(参照)を表します。
備考
Oracle REF
は参照可能オブジェクトへの識別子です。参照可能オブジェクトはオブジェクト表の行に格納されます。REF
を確保することにより、参照可能オブジェクトがクライアント側にフェッチされます。参照可能オブジェクトの属性が最初にアクセスされる時点で、OraRef
オブジェクトが基礎となるREF
を暗黙的に確保します。また、OraRef
は、複合オブジェクト検索機能(COR)を利用するオブジェクト・ナビゲーショナル操作の機能をカプセル化します。
OraRef
オブジェクトで表される参照可能オブジェクトの属性は、OraObject
インタフェースで表される値インスタンスの属性にアクセスする場合と同様の方法でアクセスします。確保される時点で、COMの包含機構を介して、OraRef
にOraObject
インタフェースが組み込まれます。実行時点で、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
インタフェースは、Oracleデータベースへの物理的なネットワーク接続を表します。
備考
OraServer
インタフェースは、Oracle Call Interfaceで提供される接続多重化機能を公開します。OraServer
オブジェクトが作成されると、OpenDatabase
メソッドをコールして複数のユーザー・セッション(OraDatabase
)がこのオブジェクトに接続できます。この機能は、Internet Information Server(IIS)など、複数の層を介する分散環境でOracle Objects for OLEを使用するアプリケーション・コンポーネントには、特に有効です。多数のアクティブなユーザー・セッションがあるOracleデータベースにアクセスする場合に接続多重化を使用すると、データベースの拡張性を改善すると同時に、サーバーでの処理およびリソース所要量の軽減に役立ちます。
図9-1に示すように、OraServer
インタフェースにはOracleデータベースへの接続が含まれ、そのデータベース接続でユーザー・セッション(OpenDatabase
オブジェクト)を作成するメソッド(OraDatabase
)を提供します。
プロパティ
メソッド
説明
OraSession
オブジェクトは、アプリケーション内で使用されるOraDatabase
、OraConnection
および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
オブジェクトは、単一のSQL文を表します。CreateSQL
メソッドを使用して、OraDatabase
オブジェクトからOraSQLStmt
オブジェクトを作成します。
作成およびリフレッシュ操作時に、OraSQLStmt
オブジェクトは、パラメータ名をSQL文のプレースホルダとして使用して、指定されたSQL文に関連する使用可能な入力パラメータをすべて自動的にバインドします。これによって、SQL文を再度解析する必要がないため、SQL文の実行パフォーマンスが向上します。
プロパティ
メソッド
説明
OraSubscription
オブジェクトは、データベース・イベントのサブスクリプションを表します。
備考
OraSubscription
オブジェクトは、OraDatabase
オブジェクトのOraSubscriptions
コレクションを介して間接的に作成、アクセスおよび削除されます。各サブスクリプションには、Oracleデータベース・イベントに関連付けられた名前があります。
OraSubscriptions
コレクションは、OraDatabase
オブジェクトの一部です。
プロパティ
メソッド
説明
OraTimeStamp
オブジェクトは、Oracle TIMESTAMP
およびOracle TIMESTAMP
WITH
LOCAL
TIME
ZONE
データ型を表し、この2つのデータ型に関する操作を実行するメソッドを提供します。OraTimeStamp
は、年、日、時、分、秒およびナノ秒の情報を格納する日時値を表します。
備考
OraTimeStamp
オブジェクトは、OraSession.OraCreateTimeStamp
メソッドを使用するか、または既存のOraTimeStamp
オブジェクトに対してClone
メソッドをコールすると作成されます。
OraTimeStamp
オブジェクトは、ServerType
にORATYPE_TIMESTAMP
またはORATYPE_TIMESTAMPLTZ
を使用してバインドできます。これによって、SQL文またはPL/SQL文のOracle TIMESTAMP
またはOracle TIMESTAMP
WITH
LOCAL
TIME
ZONE
データ型にそれぞれ関連付けられているパラメータに値をバインドできます。
TIMESTAMP
またはTIMESTAMP
WITH
LOCAL
TIME
ZONE
データ型に関連付けられている文字列をバインドするときは、ServerType
を文字列型(例: ORATYPE_VARCHAR2
、ORATYPE_STRING
)に指定し、文字列をNLS_TIMESTAMP_FORMAT
の書式で指定する必要があります。
プロパティ
メソッド
説明
OraTimeStampTZ
オブジェクトは、Oracle TIMESTAMP
WITH
TIME
ZONE
データ型を表し、このOracleデータ型に関する操作を実行するメソッドを提供します。OraTimeStampTZ
は、年、日、時、分、秒およびナノ秒およびタイムゾーンの情報を格納する特定のタイムゾーンの日時値を表します。
備考
OraTimeStampTZ
オブジェクトは、OraSession.OraCreateTimeStampTZ
メソッドを使用するか、または既存のOraTimeStampTZ
オブジェクトに対してClone
メソッドをコールすると作成されます。
OraTimeStampTZ
オブジェクトは、ServerType
にORATYPE_TIMESTAMPTZ
を使用してバインドできます。これによって、SQL文またはPL/SQL文のOracle TIMESTAMP
WITH
TIME
ZONE
データ型に関連付けられているパラメータに値をバインドできます。
TIMESTAMP
WITH
TIME
ZONE
データ型に関連付けられている文字列をバインドするときは、ServerType
を文字列型(例: ORATYPE_VARCHAR2
、ORATYPE_STRING
)に指定し、文字列をNLS_TIMESTAMP_TZ_FORMAT
の書式で指定する必要があります。
プロパティ
メソッド
説明
OraConnections
コレクションは、OraConnection
オブジェクトのリストを維持します。このリストは変更できません。つまり、このコレクションに対する追加または削除はできません。
備考
このコレクション内のOraConnection
オブジェクトにアクセスするには、添字(順序を示す整数を使用)を作成するか、またはオブジェクトの作成時に指定した名前を使用します。Count
プロパティを使用すると、コレクション内のOraConnection
オブジェクトの数を取得できます。コレクションの範囲(0
〜Count-1
)外の添字で参照すると、NULL
のOraConnection
オブジェクトが戻ります。
プロパティ
メソッド
なし
説明
OraFields
コレクションは、OraField
オブジェクトのリストを維持します。このリストは変更できません。つまり、このコレクションに対する追加または削除はできません。
備考
このコレクション内のOraField
オブジェクトにアクセスするには、添字(順序を示す整数を使用)を作成するか、またはオブジェクトの作成時に指定した名前を使用します。Count
プロパティを使用すると、コレクション内のOraField
オブジェクトの数を取得できます。コレクションの範囲(0
〜Count-1
)外の添字で参照すると、NULL
のOraField
オブジェクトが戻ります。
プロパティ
メソッド
説明
OraParameters
コレクションは、OraParameter
オブジェクトのリストを維持します。他のコレクション・オブジェクトとは異なり、このリストは変更できます。つまり、このコレクションに対する追加および削除ができます。
備考
このコレクション内のOraParameter
オブジェクトにアクセスするには、添字(順序を示す整数を使用)を作成するか、またはオブジェクトの作成時に指定した名前を使用します。Count
プロパティを使用すると、コレクション内のOraParameter
オブジェクトの数を取得できます。コレクションの範囲(0
〜Count-1
)外の添字で参照すると、NULL
のOraParameter
オブジェクトが戻ります。
コレクションのOraParameter
オブジェクトへのアクセスに加えて、このコレクションでは、Add
およびRemove
メソッドを使用してパラメータを作成および破棄できます。
プロパティ
メソッド
説明
OraSessions
コレクションは、OraSession
オブジェクトのリストを維持します。このリストは変更できません。つまり、このコレクションに対する追加または削除はできません。
備考
このコレクション内のOraSession
オブジェクトにアクセスするには、添字(順序を示す整数を使用)を作成するか、またはオブジェクトの作成時に指定した名前を使用します。Count
プロパティを使用すると、コレクション内のOraSession
オブジェクトの数を取得できます。コレクションの範囲(0
〜Count-1
)外の添字で参照すると、NULL
のOraSession
オブジェクトが戻ります。
プロパティ
メソッド
なし
説明
OraSubscriptions
コレクションは、データベース・イベントのサブスクリプションを表すOraSubscription
オブジェクトのリストを維持します。他のコレクション・オブジェクトとは異なり、このリストは変更できます。つまり、このコレクションに対する追加および削除ができます。
備考
このコレクション内のOraSubscription
オブジェクトにアクセスするには、添字(順序を示す整数を使用)を作成するか、またはオブジェクトの作成時に指定した名前を使用します。Count
プロパティを使用すると、コレクション内のOraSubscription
オブジェクトの数を取得できます。コレクションの範囲(0
〜Count-1
)外の添字で参照すると、NULL
のOraSubscription
オブジェクトが戻ります。
コレクションのOraSubscription
オブジェクトへのアクセスに加えて、このコレクションでは、Add
およびRemove
メソッドを使用してサブスクリプションを作成および破棄できます。
プロパティ
メソッド