ヘッダーをスキップ
Oracle Objects for OLE 開発者ガイド
10g リリース2(10.2)
B25023-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

10 サーバー・メソッド

この章では、Oracle Objects for OLEのサーバー・メソッドについて説明します。

OO4Oサーバー・オブジェクトの概要は、「Oracle Objects for OLEインプロセス・オートメーション・サーバー」を参照してください。

内容は次のとおりです。

サーバー・メソッド: A〜B

サーバー・メソッド: C

サーバー・メソッド: D〜H

サーバー・メソッド: I〜L

サーバー・メソッド: M〜S

サーバー・メソッド: T〜Z


Absメソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトの絶対値を計算します。

使用方法

OraNumber.Abs

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


Addメソッド

適用対象

OraParametersコレクション

説明

OraParametersコレクションにパラメータを追加します。

使用方法

oraparameters.Add Name, Value, IOType, ServerType, ObjectName

引数

このメソッドの引数は、次のとおりです。

引数 説明
Name パラメータ・コレクションに追加するパラメータの名前。 この名前は、パラメータを識別するため、および関連するSQL文とPL/SQL文内のプレースホルダとして使用されます。
Value パラメータの初期値を指定するVariant。 初期値によってこのパラメータのデータ型が定義されるため、重要です。
IOType SQL文とPL/SQLブロック内でのパラメータの使用方法を指定する整数コード。
ServerType このパラメータがバインドされるOracle Databaseの型を指定します。 BLOBCLOBBFILEOBJECTREFNESTED TABLEまたはVARRAYへのバインド時に、この指定が必要です。 指定できる値のリストは、「ServerTypeプロパティ」OraParameterを参照してください。
ObjectName オブジェクト名を含む文字列。大/小文字が区別されます。 ServerTypeORATYPE_OBJECTORATYPE_VARRAYまたはORATYPE_TABLEの場合にのみ、この指定が必要です。 ServerTypeは、PL/SQLでREFが使用される場合、ORATYPE_REFに必要です。

IOTypeの設定

IOTypeの設定内容は、次のとおりです。

設定 説明
ORAPARM_INPUT 1 入力変数にのみ使用
ORAPARM_OUTPUT 2 出力変数にのみ使用
ORAPARM_BOTH 3 入力変数と出力変数の両方に使用

これらの値は、oraconst.txtファイルにあります。

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

この値が正しいことを確認してください。 パラメータのタイプがINであるストアド・プロシージャに対してORAPARM_BOTHなどの不正なオプションを指定すると、エラーとなる場合があります。 ORAPARM_BOTHは、IN OUTパラメータに対してのみ使用されるものです。 INパラメータが設定されているストアド・プロシージャとOUTパラメータが設定されている別のストアド・プロシージャに対して使用されるものではありません。 この場合は、2つのパラメータを使用する必要があります。 このようなエラーが発生することはまれですが、パラメータに関するエラーの場合は、IOTypeが正しいことを確認してください。

Value引数には、OraBLOBなどのOracle Database 10gオブジェクトを使用できます。 その時点でオブジェクトのコピーが作成されるので、パラメータの値を参照する新規オブジェクトを取得するためにValueプロパティにアクセスする必要があることに注意してください。 たとえば、IOTypeORATYPE_BOTHで、ダイナセットから取得したOraBLOBが入力値として渡される場合、新たに更新されたパラメータの出力値を取得するためには、SQLが実行された後にパラメータのValueプロパティに1回アクセスする必要があります。 オブジェクトは、ダイナセットから取得する場合と同様の方法でパラメータから取得されます。

Valueプロパティは、常にパラメータの最新の値を参照します。 Visual BasicのNULL値を値として渡すこともできます。 Visual BasicのEMPTY値は、BLOBおよびCLOBデータ型に対しては空のLOBを意味する目的で、OBJECTVARRAYおよびNESTED TABLEデータ型に対してはオブジェクトの属性がすべてNULLであることを意味する目的で使用できます。

備考

パラメータを使用して、(SQL文を再構築するかわりに)SQLバインド変数を表します。 SQLバインド変数は、問合せを再解析することなくパラメータ値を変更できるため便利です。 SQLバインド変数は、入力変数としてのみ使用します。

パラメータを使用して、PL/SQLバインド変数を表すこともできます。 PL/SQLのバインド変数は、入力と出力両方の変数として使用できます。

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

この例では、AddおよびRemoveパラメータ・メソッド、ServerTypeパラメータ・プロパティ、(ORAEXAMP.SQLにある)ストアド・プロシージャおよびファンクションをコールするExecuteSQLデータベース・メソッドの使用方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

'Declare variables
Dim OraSession As OraSession
Dim OraDatabase As OraDatabase

'Create the OraSession Object.
Set OraSession = CreateObject("OracleInProcServer.XOraSession")

'Create the OraDatabase Object.
Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)

'Add EMPNO as an Input/Output parameter and set its initial value.
OraDatabase.Parameters.Add "EMPNO", 7369, ORAPARM_INPUT
OraDatabase.Parameters("EMPNO").ServerType = ORATYPE_NUMBER

'Add ENAME as an Output parameter and set its initial value.
OraDatabase.Parameters.Add "ENAME", 0, ORAPARM_OUTPUT
OraDatabase.Parameters("ENAME").ServerType = ORATYPE_VARCHAR2

'Add SAL as an Output parameter and set its initial value.
OraDatabase.Parameters.Add "SAL", 0, ORAPARM_OUTPUT
OraDatabase.Parameters("SAL").ServerType = ORATYPE_NUMBER

'Execute the Stored Procedure Employee.GetEmpName to retrieve ENAME.
' This Stored Procedure can be found in the file ORAEXAMP.SQL.
OraDatabase.ExecuteSQL ("Begin Employee.GetEmpName (:EMPNO, :ENAME); end;")
'Display the employee number and name.

'Execute the Stored Function Employee.GetSal to retrieve SAL.
' This Stored Function can be found in the file ORAEXAMP.SQL.
OraDatabase.ExecuteSQL ("declare SAL number(7,2); Begin" & _
           ":SAL:=Employee.GetEmpSal (:EMPNO); end;")

'Display the employee name, number and salary.
MsgBox "Employee " & OraDatabase.Parameters("ENAME").value & ", #" & _
          OraDatabase.Parameters("EMPNO").value & ",Salary=" & _
          OraDatabase.Parameters("SAL").value

'Remove the Parameters.
OraDatabase.Parameters.Remove "EMPNO"
OraDatabase.Parameters.Remove "ENAME"
OraDatabase.Parameters.Remove "SAL"

End Sub

Add(OraIntervalDS)メソッド

適用対象

OraIntervalDSオブジェクト

説明

OraIntervalDSオブジェクトに引数を加算します。

使用方法

OraIntervalDS.Add operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand 加算するVariant型の文字列、数値またはOraIntervalDSオブジェクト。

備考

この操作の結果は、OraIntervalDSオブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。

operandVariant型の文字列の場合は、[+/-]Day HH:MI:SSxFFの書式で記述する必要があります。

operandが数値の場合、提供される値は、構成されたOraIntervalDSオブジェクトが表す合計日数を表す必要があります。

Dim oraIDS as OraIntervalDS

'Create an OraIntervalDS using a string which represents
'1 day and 12 hours
Set oraIDS = oo4oSession.CreateOraIntervalDS("1 12:0:0.0")

'Add an interval using a string, which represents 2 days
'and 12 hours, to oraIDS.
'The resulting oraIDS is an interval which represents 4 days
oraIDS.Add "2 12:0:0.0"


Add(OraIntervalYM)メソッド

適用対象

OraIntervalYMオブジェクト

説明

OraIntervalYMオブジェクトに引数を加算します。

使用方法

OraIntervalYMObj.Add operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand 加算するVariant型の文字列、数値またはOraIntervalYMオブジェクト。

備考

この操作の結果は、OraIntervalYMオブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。

operandVariant型の文字列の場合は、[+/-]YEARS-MONTHSの書式で記述する必要があります。

operandが数値の場合、提供される値は、構成されたOraIntervalYMオブジェクトが表す合計年数を表す必要があります。

Dim oraIYM as OraIntervalYM

'Create an OraIntervalYM using a string which represents 1 year and 6 months
Set oraIYM = oo4oSession.CreateOraIntervalYM("1-6")

'Add an interval using a string, which represents 2 years
'and 6 months, to oraIYM.
'The resulting oraIYM is an interval which represents 4 years
oraIYM.Add "2-6"


Add(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトに数値引数を追加します。

使用方法

OraNumber.Add operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand Variant型の文字列、OraNumberオブジェクトまたは数値。

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


Add(OraSubscriptionsコレクション)メソッド

適用対象

OraSubscriptionsコレクション

説明

OraSubscriptionsコレクションにサブスクリプションを追加します。

使用方法

orasubscriptions.Add Name, DbeventsHdl, Ctx

引数

このメソッドの引数は、次のとおりです。

変数 説明
[in] Name 対象となるデータベース・イベント。 このメソッドより前に、適切なイベント・トリガーおよびAQキューを設定する必要があります。

Nameは、シングル・コンシューマ・キューに対する登録の場合は文字列'SCHEMA.QUEUE'の形式、複数コンシューマ・キューに対する登録の場合は文字列'SCHEMA.QUEUE:CONSUMER_NAME'の形式のサブスクリプション名です。

Name文字列には大文字を使用してください。

[in] DbeventsHdl データベース・イベント・ハンドラ。 対象のデータベース・イベントの起動時にコールされるNotifyDBEventsメソッドを実装するIDispatchインタフェースです。
[in] Ctx NotifyDbEventsメソッドがコールされるときにアプリケーションが渡す必要があるコンテキスト固有の情報。

備考

データベース・イベントのサブスクリプションを登録するには、Addメソッドのコール時に、対象のサブスクリプションを識別する名前と、イベントを処理するdbeventハンドラの名前を渡す必要があります。 データベース・イベントのサポートに必要なキューおよびイベント・トリガーは、サブスクリプションの起動より前に設定してください。

dbeventハンドラは、NotifyDBEventsメソッドを実装するオートメーション・オブジェクトであることが必要です。

NotifyDBEventsハンドラ

NotifyDBEventsメソッドは、対象のデータベース・イベントが起動されたときに、Oracle Objects for OLEによってコールされます。

Oracle Databaseイベントに対するキューおよびトリガーの設定方法の詳細は、『Oracle Database概要』のシステム・イベントとユーザー・イベントのトリガーに関する説明を参照してください。

このメソッドの構文は、次のとおりです。

Public Function NotifyDBEvents(ByVal Ctx As Variant, ByVal Payload As Variant

変数

このメソッドの変数は、次のとおりです。

変数 説明
[in] Ctx アプリケーションによってOraSubscriptions.Addメソッドに渡されます。 アプリケーションがdbeventハンドラに渡す必要があるコンテキスト依存の情報です。
[in] Payload この通知のペイロード。

イベント・トリガーおよびキューを設定することによって、データベース・イベントが起動します。 この場合のPayloadとは、イベントのトリガー時にキューにエンキューされたペイロード(存在する場合)を表します。


例: データベース・イベントが通知されるようにアプリケーションを登録する方法

次のコードは、アプリケーションが、データベース・ログイン・イベント(データベースに対するすべてのログインなど)の通知をサブスクライブする例です。 ユーザーがデータベースにログインすると、サブスクリプション時に渡されたDBEventsHdlrNotifyDBEventsメソッドがコールされます。 コンテキスト依存の情報およびイベント固有の情報がNotifyDBEventsメソッドに渡されます。

この例のDBEventsHdlrは、後で定義されているDBEventClsです。

メイン・アプリケーション:

' First instantiate the dbevent handler. The dbevent notification
' will fire the NotifyDBEvents on the callback handler.

Public DBEventsHdlr As New DBEventCls
Private Sub Form_Load()
    Dim gOraSession As Object
    Dim gOraSubscriptions As OraSubscriptions
    Dim gOraDatabase As OraDatabase

    'Create the OraSession Object
    Set gOraSession = CreateObject("OracleInProcServer.XOraSession")

   'Create the OraDatabase Object by opening a connection to Oracle.
    Set gOraDatabase = gOraSession.DbOpenDatabase
             ("ora90.us.oracle.com", "pubsub/pubsub",
              ORADB_ENLIST_FOR_CALLBACK)
    Set gOraSubscriptions = gOraDatabase.Subscriptions
    gOraSubscriptions.Add "PUBSUB.LOGON:ADMIN", DBEventsHdlr,
             gOraDatabase
    gOraSubscriptions(0).Register
    MsgBox "OK"
End Sub

NotifyDBEventsメソッドを定義するデータベース・イベント・ハンドラ・クラス。

Public countofMsgs as integer
Public Function NotifyDBEvents(Ctx As Variant, Payload As Variant )
    On error goto NotifyMeErr

    MsgBox "Retrieved payload " + Payload
   ' do something - here the subscription is unregistered after
   ' receiving 3 notifications
    countofMsgs = countofMsgs + 1
    If countofMsgs > 3 Then
        Ctx.Subscriptions(0).UnRegister
    End If
    Exit Sub
NotifyMeErr:
    Call RaiseError(MyUnhandledError, "newcallback:NotifyMe Method")

End Sub


関連項目:



AddIntervalDSメソッド

適用対象

OraTimeStampオブジェクト

OraTimeStampTZオブジェクト

説明

日数から秒数までの間隔を表す時間隔をOraTimeStampまたはOraTimeStampTZオブジェクトに加算します。

使用方法

OraTimeStampObj.AddIntervalDS operand
OraTimeStampTZObj.AddIntervalDS operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand 現行のOraTimeStampまたはOraTimeStampTZオブジェクトに加算する、日数から秒数までの間隔を表すVariant型の文字列、数値またはOraIntervalDSオブジェクト。

備考

現行のOraTimeStampまたはOraTimeStampTZオブジェクトに対する間隔の加算結果は、現行オブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。

operandVariant型の文字列の場合は、[+/-] Day HH:MI:SSxFFの書式で記述する必要があります。

operandが数値の場合、提供される値は、構成されたOraIntervalDSオブジェクトが表す合計日数を表す必要があります。

OraTimeStampの使用方法

Dim OraTimeStamp As OraTimeStamp

...

'Create OraTimeStamp using a string
Set OraTimeStamp = OraSession.CreateOraTimeStamp("2000-12-28 00:00:00", _
         "YYYY-MM-DD HH:MI:SS")

'Add an interval using numeric value that represents 5 days and 12 hours
OraTimeStamp.AddIntervalDS 5.5

'Value should now be "2001-1-2 12:00:00"
tsStr = OraTimeStamp.Value

OraTimeStampTZの使用方法

Dim OraTimeStampTZ As OraTimeStampTZ

...

'Create OraTimeStampTZ using a string
Set OraTimeStamp = OraSession.CreateOraTimeStampTZ("2000-12-28 00:00:00 -07:00", _
       "YYYY-MM-DD HH:MI:SS TZH:TZM")

'Add an interval using numeric value that represents 5 days and 12 hours
OraTimeStampTZ.AddIntervalDS 5.5

'Value should now be "2001-1-2 12:00:00"
tstzStr = OraTimeStampTZ.Value

...

AddIntervalYMメソッド

適用対象

OraTimeStampオブジェクト

OraTimeStampTZオブジェクト

説明

年数から月数までの間隔を表す時間隔をOraTimeStampまたはOraTimeStampTZオブジェクトに加算します。

使用方法

OraTimeStampObj.AddIntervalYM operand
OraTimeStampTZObj.AddIntervalYM operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand 現行のOraTimeStampまたはOraTimeStampTZオブジェクトに加算する、年数から月数までの間隔を表すVariant型の文字列、数値またはOraIntervalYMオブジェクト。

備考

現行のOraTimeStampまたはOraTimeStampTZオブジェクトに対する間隔の加算結果は、現行オブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。

operandVariant型の文字列の場合は、[+/-] YEARS-MONTHSの書式で記述する必要があります。

operandが数値の場合、提供される値は、構成されたOraIntervalYMオブジェクトが表す合計年数を表す必要があります。

例: OraTimeStampオブジェクトの使用方法

Dim OraTimeStamp As OraTimeStamp

...
'Create OraTimeStamp using a string
Set OraTimeStamp = OraSession.CreateOraTimeStamp("2000-12-28 00:00:00", _
         "YYYY-MM-DD HH:MI:SS")

'Add an interval using numeric value that represents 2 years
OraTimeStamp.AddIntervalYM 2

'Value should now be "2002-12-28 00:00:00"
tsStr = OraTimeStamp.Value

...

例: OraTimeStampTZオブジェクトの使用方法

Dim OraTimeStampTZ As OraTimeStampTZ

...
'Create OraTimeStampTZ using a string
Set OraTimeStampTZ =OraSession.CreateOraTimeStampTZ("2000-12-28 00:00:00" & _
            "-07:00"  "YYYY-MM-DD HH:MI:SS TZH:TZM")

'Add an interval using numeric value that represents 2 years
OraTimeStampTZ.AddIntervalYM 2

'Value should now be "2002-12-28 00:00:00"
tstzStr = OraTimeStampTZ.Value

...

AddNewメソッド

適用対象

OraDynasetオブジェクト

説明

コピー・バッファを消去し、指定したダイナセットおよび関連データベースへのレコード挿入操作を開始します。

使用方法

oradynaset.AddNew
oradynaset.DbAddNew

備考

AddNew操作が開始されるとき、ダイナセット内のフィールドの値はコピー・バッファ内に保持され、データベースの実際の内容には反映されません。

フィールドの値はOraFieldオブジェクトを介して変更され、Update操作によって、または新しい行を破棄するようなデータベース内での移動が発生したときにコミットされます。 明示的に割り当てられなかったフィールド値は、NULLに設定されるか、またはOracleのデフォルト・メカニズムによってデフォルトに設定できます。この設定は、OpenDatabaseメソッドのコール時に使用されたオプション・フラグの列のデフォルト設定モードによって決定されます。 いずれの場合も、データベース表にあり、ダイナセットにないフィールドは、常にOracleのデフォルト・メカニズムによってデフォルトに設定されます。

レコードは、内部的には"INSERT into TABLE (...) VALUES (...)" SQL文を使用してAddNewメソッドによって挿入され、表の最後に追加されます。

オブジェクト型、コレクション型およびREF型の列を含んだ行を追加する場合は、これらの型の列値として有効なOraObjectOraCollectionまたはOraRefインタフェース、あるいはNULL値を設定してください。 この列値は、CreateOraObjectメソッドによって戻されるオートメーション・オブジェクトを使用して設定することもできます。 BLOBCLOBまたはBFILEの列を含んだ行を追加する場合は、これらの型の列値として有効なOraBLOBOraCLOBまたはOraBFILEインタフェース、NULL、あるいはEmptyを設定してください。 BLOBCLOBおよびBFILE型の列にEmpty値を設定すると、データベースに空のLOB値が挿入されます。


注意:

EditAddNewまたはDeleteメソッドのコールでは、未処理のEditまたはAddNewメソッドのコールは処理前に取り消されます。 Updateメソッドを使用して保存されていない未処理の変更は、すべて取消処理中に失われます。

この例では、AddNewおよびUpdateメソッドを使用して、ダイナセットに新規レコードを追加する方法を示します。 このコードをフォームの定義セクションにコピーしてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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 the OraDynaset Object.
 Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)
 'Begin an AddNew.
 OraDynaset.AddNew

 'Set the field(column) values.
 OraDynaset.Fields("EMPNO").Value = "1000"
 OraDynaset.Fields("ENAME").Value = "WILSON"
 OraDynaset.Fields("JOB").Value = "SALESMAN"

 OraDynaset.Fields("MGR").Value = "7698"
 OraDynaset.Fields("HIREDATE").Value = "19-SEP-92"
 OraDynaset.Fields("SAL").Value = 2000
 OraDynaset.Fields("COMM").Value = 500
 OraDynaset.Fields("DEPTNO").Value = 30

 'End the AddNew and Update the dynaset.
 OraDynaset.Update

 MsgBox "Added one new employee."

End Sub

AddTableメソッド

適用対象

OraParametersコレクション

説明

OraParametersコレクションに配列パラメータを追加します。

使用方法

oraparamarray.AddTable Name, IOType, ServerType, ArraySize , ElementSize, ObjectName

引数

このメソッドの引数は、次のとおりです。

引数 説明
Name パラメータ・コレクションに追加するパラメータの名前。 この名前は、パラメータを識別するため、および関連するSQL文とPL/SQL文内のプレースホルダとして使用されます。
IOType SQL文とPL/SQLブロック内でのパラメータの使用方法を指定するための整数コード。
ServerType この配列パラメータがバインドされるOracle Databaseの型を指定します。 指定できる値のリストは、「ServerTypeプロパティ」OraParameterを参照してください。
ArraySize パラメータの配列要素の数を指定します。このパラメータは、最大バッファ長を計算するために使用されます。
ElementSize [オプション] 要素のサイズを定義します。 文字および文字列型の表(配列)パラメータにのみ有効です。 ElementSizeの有効サイズは、VarTypeによって異なります。

ElementSizeの指定は、charおよびstring型にバインドする場合以外はオプションです。

ObjectName 大/小文字が区別され、オブジェクト名を含む文字列。 ServerTypeORATYPE_OBJECTORATYPE_VARRAYまたはORATYPE_TABLEの場合のみ、この指定が必要です。 これは、PL/SQLでREFが使用される場合、ORATYPE_REFに必要です。

IOTypeの設定

IOTypeの設定内容は、次のとおりです。

定数 説明
ORAPARM_INPUT 1 入力変数にのみ使用
ORAPARM_OUTPUT 2 出力変数にのみ使用
ORAPARM_BOTH 3 入力変数と出力変数の両方に使用

この値が正しいことを確認してください。 パラメータのタイプがINであるストアド・プロシージャに対してORAPARM_BOTHなどの不正なオプションを指定すると、エラーとなる場合があります。 ORAPARM_BOTHは、IN OUTパラメータに対してのみ使用されるものです。 INパラメータが設定されているストアド・プロシージャとOUTパラメータが設定されている別のストアド・プロシージャに対して使用されるものではありません。 この場合は、2つのパラメータを使用する必要があります。 このようなエラーが発生することはまれですが、パラメータに関するエラーの場合は、IOTypeが正しいことを確認してください。

ServerType

有効な型は、ServerTypeプロパティを参照し、次の点に注意してください。

注意:

ElementSize(オプション)

文字、文字列およびRAW型に有効です。 ElementSizeの有効サイズは、VarTypeによって異なります。 このサイズは、個々の文字列またはRAW配列要素の長さを表します。 有効範囲は、次のとおりです。

VarType サイズ
ORATYPE_VARCHAR2 有効範囲は、1〜1999
ORATYPE_VARCHAR 有効範囲は、1〜1999
ORATYPE_STRING 有効範囲は、1〜1999
ORATYPE_CHAR 有効範囲は、1〜255
ORATYPE_CHARZ 有効範囲は、1〜255
ORATYPE_RAW_BIN 有効範囲は、1〜4000(備考を参照)

備考

SQL文を再構築するかわりに、パラメータを使用して、配列を挿入、更新および削除するためのSQLバインド変数を表します。 SQLバインド変数は、問合せを再解析することなくパラメータ値を変更できるため便利です。 SQLバインド変数は、入力変数としてのみ使用します。

パラメータを使用して、PL/SQLバインド(IN/OUT)変数を表すこともできます。 PL/SQLのバインド変数は、入力と出力両方の変数として使用できます。

Oracle Raw型の列にバインドする場合は、ServerType値にORATYPE_RAW_BINを使用します。 値のPutまたはGetには、バイト配列を使用します。 ORATYPE_RAW_BINバインド・バッファの最大許容サイズは、表の列にバインドする場合は2000バイト、ストアド・プロシージャにバインドする場合は32KBです。 どの要素(ElementSize引数を参照)も、ストアド・プロシージャにバインドする場合で4000バイト、表の列にバインドする場合で2000バイトを超えることはできません。 コード例は、ORACLE_BASE\ORACLE_HOME\OO4O\VB\Rawディレクトリにあるサンプルを参照してください。

「例: PL/SQLでOraParamArraysを使用する方法」を参照してください。


Append(OraCollection)メソッド

適用対象

OraCollectionオブジェクト

説明

コレクションのサイズを1つ拡張し、コレクションの最後にVariant型の値を追加します。

使用方法

OraCollection.Append element

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] element 追加する値を表すVariant

備考

OraCollectionObject型またはREF型のコレクションの場合、要素を示す引数は有効なOraObjectまたはOraRefを表します。

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

例: OraCollectionオブジェクトに対するAppendメソッドの例

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

'Append an "Eric" to the collection.
'Before that row level lock should be obtained
OraDynaset.Edit
EnameList.Append "Eric"
OraDynaset.Update

Append(OraLOB)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

説明

入力用OraLOBオブジェクトのLOBデータをこのインスタンスの内部LOB値に追加します。

使用方法

OraBlob.Append srcBlob
OraClob.Append srcClob

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] srcLOB OraBLOBまたはOraCLOB型の有効なオブジェクト。

備考

入力用LOBのLOBデータを現行LOB値の最後に追加します。 このメソッドのコール前に、行レベルまたはオブジェクト・レベルでロックを取得する必要があります。


AppendChunkメソッド

適用対象

OraFieldオブジェクト

説明

コピー・バッファ内のLONGまたはLONG RAW型のフィールドに文字列のデータを追加します。

使用方法

orafield.AppendChunk(string)
orafield.DbAppendChunk(string)

引数

このメソッドの引数は、次のとおりです。

引数 説明
string 指定したフィールドに追加するデータ。

備考

AppendChunkメソッドでは、64KBを超えるデータ・フィールドを操作できます。


注意:

この例はそのままでは実行できません。 frmChunkという名前の定義済フォームが必要です。

この例では、AppendChunkメソッドを使用して、データベース内のLONG RAW型の列にファイルを読み込む方法を示します。 この例では、longrawという列を含んだ表を示すOraDynasetという有効なダイナセットが存在していると想定しています。 このコードをfrmChunkというフォームの定義セクションにコピーしてください。 このプロシージャは、有効なfilenameを使用してコールしてください。

Sub AppendChunkExample (FName As String)

 'Declare various variables.
 Dim NumChunks As Integer, RemChunkSize As Integer
 Dim TotalSize As Long, CurChunk As String
 Dim I As Integer, FNum As Integer, ChunkSize As Integer

 'Set the size of each chunk.
 ChunkSize = 10240

 frmChunk.MousePointer = HOURGLASS

 'Begin an add operation.
 OraDynaset.AddNew

 'Clear the LONGRAW field.
 OraDynaset.Fields("LONGRAW").Value = ""

 'Get a free file number.
 FNum = FreeFile

 'Open the file.
 Open FName For Binary As #FNum

 'Get the total size of the file.

 TotalSize = LOF(FNum)

 'Set number of chunks.
 NumChunks = TotalSize \ ChunkSize

 'Set number of remaining bytes.
 RemChunkSize = TotalSize Mod ChunkSize

 'Loop through the file.
 For I = 0 To NumChunks

  'Calculate the new chunk size.
  If I = NumChunks Then
   ChunkSize = RemChunkSize
  End If

  CurChunk = String$(ChunkSize, 32)

  'Read a chunk from the file.
  Get #FNum, , CurChunk

  'Append chunk to LONGRAW field.
  OraDynaset.Fields("LONGRAW").AppendChunk (CurChunk)

 Next I

'Complete the add operation and update the database.
OraDynaset.Update

 'Close the file.
 Close FNum

 frmChunk.MousePointer = DEFAULT

End Sub

AppendChunkByteメソッド

適用対象

OraFieldオブジェクト

説明

コピー・バッファ内のLONGまたはLONG RAW型のフィールドにバイト配列のデータを追加します。

使用方法

orafield.AppendChunkByte(ByteArray, numbytes)

引数

このメソッドの引数は、次のとおりです。

引数 説明
Byte Array 指定したフィールドに追加するデータ。
numbytes コピーするバイト数。

備考

AppendChunkByteメソッドでは、64KBを超えるデータ・フィールドを操作できます。


注意:

この例は、参照用の不完全なサンプル・コードです。 このサンプル・コードに基づいたLONGRAWという完全なVisual Basicサンプルが、OO4Oサンプル・ディレクトリに用意されています。

このサンプル・コードでは、AppendChunkByteメソッドを使用して、データベース内のLONG RAW型の列にファイルを読み込む方法を示します。 このコードでは、longrawという列を含んだ表を示すOraDynasetという有効なダイナセットが存在していると想定しています。

Sub AppendChunkByteExample (FName As String)

 'Declare various variables.
 Dim NumChunks As Integer, RemChunkSize As Integer
 Dim TotalSize As Long, CurChunkByte() As Byte
 Dim I As Integer, FNum As Integer, ChunkSize As Integer
 'Set the size of each chunk.
 ChunkSize = 10240
 frmChunk.MousePointer = HOURGLASS

 'Begin an add operation.
 OraDynaset.AddNew
 'Clear the LONGRAW field.
 OraDynaset.Fields("LONGRAW").Value = ""

 'Get a free file number.
 FNum = FreeFile

 'Open the file.
 Open FName For Binary As #FNum

 'Get the total size of the file.
 TotalSize = LOF(FNum)

 'Set number of chunks.
 NumChunks = TotalSize \ ChunkSize

 'Set number of remaining bytes.
 RemChunkSize = TotalSize Mod ChunkSize

 'Loop through the file.
 For I = 0 To NumChunks

  'Calculate the new chunk size.
  If I = NumChunks Then
   ChunkSize = RemChunkSize

  End If

  ReDim CurChunkByte(ChunkSize)

  'Read a chunk from the file.
  Get #FNum, , CurChunkByte

  'Append chunk to LONGRAW field.
  OraDynaset.Fields("LONGRAW").AppendChunkByte (CurChunkByte)
 Next I
'Complete the add operation and update the database.
OraDynaset.Update

 'Close the file.
 Close FNum

 frmChunk.MousePointer = DEFAULT

End Sub


AQAgent(OraAQMsg)メソッド

適用対象

OraAQMsgオブジェクト

説明

指定したコンシューマに対してOraAQAgentのインスタンスを作成し、メッセージのOraAQAgentリストに追加します。

使用方法

Set agent = qMsg.AQAgent(name)

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] name メッセージのコンシューマ名を表す30バイトまでの文字列。
[in] [オプション] Address プロトコル固有の受信者アドレスを表す128バイトの文字列。例: [schema.] queue[@dblink]。

備考

OraAQAgentは、メッセージ受信者を表すオブジェクトで、複数のコンシューマを許可するキューに対してのみ有効です。キューのサブスクライバはデフォルトで受信者です。 このオブジェクトを使用して、デフォルトのコンシューマを上書きします。

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

Set agent = qMsg.AQAgent(consumer)

1つのメッセージがサポートできるエージェントの最大数は10です。

AQAgentメソッドはOraAQAgentオブジェクトのインスタンスを戻します。


注意:

このリリースでAddressはサポートされません(今後、サポートする予定です)。


AQMsg(OraAQ)メソッド

適用対象

OraAQオブジェクト

説明

指定したオプションに対してOraAQMsgを作成します。

使用方法

Set qMsg = Q.AQMsg(msgtype, typename, schema)

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] msgtype RAWまたはユーザー定義型を示す整数。 RAW型に対してはオプションです。次の値を指定できます。
  • ORATYPE_RAW23): メッセージ型はRAW型。

  • ORATYPE_OBJECT108): メッセージ型はユーザー定義型。

[in] typename 型名を示す文字列。 RAW型に対してはオプションです。 デフォルトは'RAW'です。
[in] [オプション] schema 型が定義されたスキーマを表す文字列。 デフォルトは'SYS'です。

備考

このメソッドは次のように使用できます。

set QMsg = Q.AQMsg(ORATYPE_OBJECT,"MESSAGE_TYPE","SCOTT")
set QMsg = Q.AQMsg


ArcCos(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトのアーク・コサインを計算します。 結果はラジアンになります。

使用方法

OraNumber.ArcCos

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。

OraNumberの値が-1未満または1を超える場合、このメソッドはエラーを戻します。


ArcSin(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトのアーク・サインを計算します。 結果はラジアンになります。

使用方法

OraNumber.ArcSin

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。

OraNumberオブジェクトが-1未満または1を超える場合、このメソッドはエラーを戻します。


ArcTan(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトのアーク・タンジェントを計算します。 結果はラジアンになります。

使用方法

OraNumber.ArcTan

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


ArcTan2(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

指定されたoperandを使用して、2つの数のアーク・タンジェントを計算します。 結果はラジアンになります。

使用方法

OraNumber.ArcTan2 operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand Variant型の文字列、OraNumberまたは数値

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。

operandが0(ゼロ)の場合、このメソッドはエラーを戻します。


Attribute(OraMetaData)メソッド

適用対象

OraMetaDataオブジェクト

説明

指定したindexOraMDAttributeオブジェクトを戻します。

使用方法

Set OraMDAttribute = OraMetaData.Attribute(2)
Set OraMDAttribute = OraMetaData.Attribute("AttributeName")

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] index 0count-1の範囲にある整数の索引、または属性の名前を表す文字列。

備考

なし


関連項目:

指定できる属性名のリストは、「OraMetaDataオブジェクト」を参照してください。


AutoBindDisableメソッド

適用対象

OraParameterオブジェクト

OraParamArrayオブジェクト

説明

パラメータのAutoBind状態をリセットします。

使用方法

oraparameter.AutoBindDisable

備考

パラメータがAutoBindDisabled状態の場合、SQLまたはPL/SQL文には自動的にバインドされません。

この例では、異なるパラメータを使用する各種ダイナセットの作成時に、AutoBindDisableおよびAutoBindEnableメソッドを使用して不要なパラメータをバインドしないようにする方法を示します。 このコードをフォームの定義セクションにコピーしてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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&)

 'Add the job input parameter with initial value MANAGER.
 OraDatabase.Parameters.Add "job", "MANAGER", 1

 'Add the deptno input parameter with initial value 10.
 OraDatabase.Parameters.Add "deptno", 10, 1

 'Disable the deptno parameter for now.
 OraDatabase.Parameters("deptno").AutoBindDisable

 'Create the OraDynaset Object using the job parameter.
 Set OraDynaset = OraDatabase.CreateDynaset("select * from emp" & _
               "where job = :job", 0&)

 'Only employees with job=MANAGER will be contained in the dynaset.
 MsgBox "Employee #" & OraDynaset.Fields("empno").value & ", " & _
               "Job=" & OraDynaset.Fields("job").value

 'Enable the deptno parameter and disable the job parameter.
 OraDatabase.Parameters("deptno").AutoBindEnable
 OraDatabase.Parameters("job").AutoBindDisable

 'Create the OraDynaset Object using the deptno parameter.
 Set OraDynaset = OraDatabase.CreateDynaset("select * from emp" & _
               "where deptno = :deptno", 0&)

 'Only employees with deptno=10 will be contained in the dynaset.
 MsgBox "Employee #" & OraDynaset.Fields("empno").value & "," & _
                "DeptNo=" & OraDynaset.Fields("deptno").value

End Sub

AutoBindEnableメソッド

適用対象

OraParameterオブジェクト

OraParamArrayオブジェクト

説明

パラメータのAutoBind状態を設定します。

使用方法

oraparameter.AutoBindEnable

備考

パラメータがAutoBindEnabled状態の場合、SQLまたはPL/SQL文に自動的にバインドされます。

この例では、異なるパラメータを使用する各種ダイナセットの作成時に、AutoBindDisableおよびAutoBindEnableメソッドを使用して不要なパラメータをバインドしないようにする方法を示します。 このコードをフォームの定義セクションにコピーしてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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&)

 'Add the job input parameter with initial value MANAGER.
 OraDatabase.Parameters.Add "job", "MANAGER", 1

 'Add the deptno input parameter with initial value 10.
 OraDatabase.Parameters.Add "deptno", 10, 1

 'Disable the deptno parameter for now.
 OraDatabase.Parameters("deptno").AutoBindDisable

 'Create the OraDynaset Object using the job parameter.
 Set OraDynaset = OraDatabase.CreateDynaset("select * from emp" & _
                 "where job = :job", 0&)

 'Only employees with job=MANAGER will be contained in the dynaset.
 MsgBox "Employee #" & OraDynaset.Fields("empno").value & "," &  _
                 "Job=" & OraDynaset.Fields("job").value

 'Enable the deptno parameter and disable the job parameter.
 OraDatabase.Parameters("deptno").AutoBindEnable
 OraDatabase.Parameters("job").AutoBindDisable

 'Create the OraDynaset Object using the deptno parameter.
 Set OraDynaset = OraDatabase.CreateDynaset("select * from emp" & _
                  "where deptno = :deptno", 0&)

 'Only employees with deptno=10 will be contained in the dynaset.
 MsgBox "Employee #" & OraDynaset.Fields("empno").value & "," & _
                  "DeptNo=" & OraDynaset.Fields("deptno").value

End Sub

BeginTransメソッド

適用対象

OraConnectionオブジェクト

OraDatabaseオブジェクト

OraSessionオブジェクト

説明

指定したセッション内で、データベースのトランザクションを開始します。

使用方法

oraconnection.BeginTrans
oradatabase.BeginTrans
orasession.BeginTrans

備考

このメソッドのコール後、CommitTransが発行されるまで、データベース・トランザクションはコミットされません。 Rollbackメソッドを使用すると、セッションをロールバックできます。 BeginTransメソッドでトランザクションをすでに開始しているときに、BeginTransを再度使用するとエラーが発生します。

BeginTrans発行後に、グローバル・トランザクション内のダイナセットの所定の行でUpdateまたはDeleteメソッドに失敗すると、UpdateまたはDeleteメソッドをコールした行がロックされたままになることに注意してください。 CommitTransまたはRollbackメソッドをコールするまで、このロックは解除されません。


注意:

OraDatabaseオブジェクトがMicrosoft Transaction Server(MTS)にリストされていて、グローバルMTSトランザクションの一部である場合、このメソッドは無効です。

この例では、BeginTransメソッドを使用してダイナセットの一連の編集を1つのトランザクションにグループ化し、Rollbackを使用してその変更内容を取り消す方法を示します。 このコードをフォームの定義セクションにコピーしてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset As OraDynaset
 Dim fld As OraField

 'Create the OraSession Object.
 Set OraSession = CreateObject("OracleInProcServer.XOraSession")

 'Create the OraDatabase Object by opening a connection to Oracle.
 Set OraDatabase = OraSession. OpenDatabase("ExampleDb", _
                     "scott/tiger", 0&)

 'Create the OraDynaset Object.
 Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)

 'Start Transaction processing.
 OraSession.BeginTrans

 'Setup a field object to save object references.
 Set fld = OraDynaset.Fields("sal")

 'Traverse until EOF is reached, setting each employees salary to zero
 Do Until OraDynaset.EOF = True
   OraDynaset.Edit
   fld.value = 0
   OraDynaset.Update
   OraDynaset.MoveNext
 Loop
 MsgBox "All salaries set to ZERO."

 'Currently, the changes have NOT been committed to the database.
 'End Transaction processing. Using RollbackTrans
 'means the rollback can be canceled in the Validate event.
 OraSession.Rollback
 'MsgBox "Salary changes rolled back."

End Sub

Cancelメソッド

適用対象

ORASQL_NONBLKオプション付きで作成されたOraSQLStmtオブジェクト

説明

現在実行中のSQL操作を取り消します。

使用方法

status = OraSQL.NonBlockingState
   if status = ORASQL_STILL_EXECUTING
OraSQL.CancelEndif

戻り値

ORASQL_SUCCESS(0): エラーは、例外として発生します。


関連項目:

非同期処理


CancelEdit(OraRef)メソッド

適用対象

OraRefオブジェクト

説明

データベースの参照可能オブジェクトのロックを解除し、オブジェクトの更新操作を取り消します。

使用方法

OraRef.CancelEdit

備考

このメソッドは注意して使用してください。このメソッドをコールすると、接続上の保留中のトランザクションもすべて取り消されます。


Ceil(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトの上限値を計算します。

使用方法

OraNumber.Ceil

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


ChangePassword(OraServer)メソッド

適用対象

OraServerオブジェクト

説明

ユーザーのパスワードを変更します。

使用方法

OraServer.ChangePassword user_name, current_password, new_password

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] user_name パスワードを変更するユーザーを表す文字列。
[in] current_password ユーザーの現在のパスワードを表す文字列。
[in] new_password ユーザー・アカウントに新しく設定するパスワードを表す文字列。

備考

このメソッドを使用する前に、Openメソッドを使用してOraServerオブジェクトをOracleデータベースに接続する必要があります。

このメソッドは、パスワードの期限が切れた場合に有効です。 期限が切れた場合、OpenDatabaseメソッドは次のエラーを戻す可能性があります。

ORA-28001 「パスワードが期限切れです。」

ChangePassword(OraSession)メソッド

適用対象

OraSessionオブジェクト

説明

ユーザーのパスワードを変更します。

使用方法

OraSession.ChangePassword database_name, user_name, current_password, new_password

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] database_name データベースへの接続時に使用されるOracleネットワーク指定子を表す文字列。
[in] user_name パスワードを変更するユーザーを表す文字列。
[in] current_password ユーザーの現在のパスワードを表す文字列。
[in] new_password ユーザー・アカウントに新しく設定するパスワードを表す文字列。

備考

このメソッドは、パスワードの期限が切れた場合に特に有効です。 期限が切れた場合、OpenDatabaseまたはCreateDatabasePoolメソッドは次のエラーを戻す可能性があります。

ORA-28001 「パスワードが期限切れです。」

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim password as String

'Note: The DBA could expire scott's password by issuing
'ALTER USER SCOTT PASSWORD EXPIRE

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
password = "tiger"

On Error GoTo err:
Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/" & password, 0&)
End

err:
'Check for password expiration error

If OraSession.LastServerErr = 28001 Then
    OraSession.ChangePassword "ExampleDb", "scott", password, "newpass"
    'reset our password variable, then try OpenDatabase again
    password = "newpass"
    Resume
End If

End

Cloneメソッド

適用対象

OraDynasetオブジェクト

説明

指定したダイナセットの複製ダイナセットを戻します。

使用方法

Set oradynaset2 = oradynaset1.Clone
Set oradynaset2 = oradynaset1.DbClone

備考

このメソッドは、指定したダイナセットの複製ダイナセットを作成します。 元のダイナセットと複製ダイナセットには、それぞれ独自のカレント・レコードがあります。 ただし、新規ダイナセットでは現在の行が設定されず、EOFBOF条件は両方ともTRUEに設定されます。 これを変更するには、MoveまたはFindメソッドを使用して、新規複製ダイナセットに現在の行を明示的に設定する必要があります。

Cloneメソッドの使用は、元のダイナセットに影響を与えません。 クローンのダイナセットでは、レコードの追加、更新または削除はできません。

カレント・レコードを複数必要とするダイナセットで操作を実行するときはCloneメソッドを使用します。

クローンのダイナセットには、元のプロパティ設定がすべて反映されるとはかぎりません。 CacheBlockCacheSliceSizeCacheSlicePerBlockおよびFetchLimitプロパティは、すべてNULLに設定されます。

ダイナセットとそのクローンのブックマーク間には互換性があります。異なるCreateDynasetメソッドを使用して作成されたダイナセットのブックマーク間には互換性がありません。


Clone(OraLOB/BFILE)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

OraBFILEオブジェクト

説明

OraLOBまたはOraBFILEオブジェクトのクローンを戻します。

使用方法

OraBlob1 = OraBlob.Clone
OraClob1 = OraClob.Clone
OraBfile = OraBfile.Clone

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] OraLOB OraBLOBOraCLOBまたはOraBFILE型の有効なオブジェクト。

備考

このメソッドは、OraBLOBまたはOraCLOBオブジェクトのコピーを作成します。 このコピーは、ダイナセットの移動操作またはOraSQLStmtRefresh操作によって変更されることはありません。 OraBLOBまたはOraCLOBオブジェクトに対するLOBデータの変更は、クローンでは実行できません。

このメソッドは、Oracle BFILEロケータのコピーを作成し、そのコピーに関連付けられているOraBFILEを戻します。 OraBFILEのコピーは、ダイナセットの移動操作またはOraSQLStmtのリフレッシュ操作によって変更されることはありません。


Clone(OraCollection)メソッド

適用対象

OraCollectionオブジェクト

説明

OraCollectionオブジェクトのクローンを戻します。

使用方法

set OraCollection1 = OraCollection.Clone

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] oraCollection1 有効なOraCollectionオブジェクト。

備考

このメソッドは、Oracleコレクションのコピーを作成し、そのコピーに関連付けられているOraCollectionオブジェクトを戻します。 このOracleコレクションのコピーは、ダイナセットの移動操作またはOraSQLStmtRefresh操作によって変更されることはありません。 このメソッドが戻すOraCollectionオブジェクトを使用して、基礎となるOracleコレクションの要素値にアクセスすることはできますが、要素の値を変更する操作はできません。


Clone(OraIntervalDS)メソッド

適用対象

OraIntervalDSオブジェクト

説明

OraIntervalDSオブジェクトのコピーを戻します。

使用方法

Set OraIntervalDSObjClone = OraIntervalDSObj.Clone

備考

元のオブジェクトと同じ値の新規OraIntervalDSオブジェクトを戻します。


Clone(OraIntervalYM)メソッド

適用対象

OraIntervalYMオブジェクト

説明

OraIntervalYMオブジェクトのコピーを戻します。

使用方法

Set OraIntervalYMObjClone = OraIntervalYMObj.Clone

備考

元のオブジェクトと同じ値の新規OraIntervalYMオブジェクトを戻します。


Clone(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトのコピーを戻します。

使用方法

Set OraNumber2 = OraNumber.Clone

備考

元のオブジェクトと同じ値の新規OraNumberオブジェクトを戻します。


Clone(OraObject/Ref)メソッド

適用対象

OraObjectオブジェクト

OraRefオブジェクト

説明

OraObjectまたはOraRefオブジェクトのクローンを戻します。

使用方法

Set OraObjectClone = OraObject.CloneSet OraRefClone = OraRef.Clone

備考

このメソッドは、値インスタンスまたはREF値のコピーを作成し、そのコピーに関連付けられているOraObjectまたはOraRefを戻します。 このコピーは、ダイナセットの移動操作またはOraSQLStmtのリフレッシュ操作によって変更されることはありません。 このメソッドが戻すOraObjectオブジェクトは、基礎となる値インスタンスの属性値にアクセスすることはできますが、その属性値を変更する操作はできません。

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

例: OraObjectオブジェクトに対するCloneメソッド

次の例では、Cloneメソッドの使用方法を示します。

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim Address as OraObject
Dim AddressClone 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

'here Address OraObject points to Address value instance in the server
'for the first row
msgbox Address.Street

'move to second row
OraDynaset.MoveNext

'here Address OraObject points to Address value instance in the server
'for the second row
msgbox Address.Street

'get the clone of Address object. This clone points to the copy of
'the value instance for second row
set AddressClone = Address.Clone

'move to third row
OraDynaset.MoveNext

'here Address OraObject points to Address value instance in the server
'for third row
msgbox Address.Street

'here AddressClone OraObject points to copy of Address value instance
' in the server for second row
msgbox AddressClone.Street

例: OraRefオブジェクトに対するCloneメソッド

次の例では、Cloneメソッドの使用方法を示します。 サンプル・コードを実行する前に、必要なデータ型と表がデータベース内にあることを確認してください。

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim Person as OraRef
Dim PersonClone 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

'here Person OraRef points to Person Ref value in the server for the first row
msgbox Person.Name

'move to second row
OraDynaset.MoveNext

'here Person OraRef points to Person Ref value in the server for the second row
msgbox Person.Name

'get the clone of Person object.
'This clone points to the copy of the Ref for second row
set PersonClone = Person.Clone

'move to third row
OraDynaset.MoveNext

'here Person OraRef points to Person Ref value
'in the server for the third row
msgbox Person.Name

'here PersonClone OraRef points to Person Ref value
'in the server for the second row
msgbox PersonClone.Name

Clone(OraTimeStamp)メソッド

適用対象

OraTimeStampオブジェクト

説明

OraTimeStampオブジェクトのコピーを戻します。

使用方法

Set OraTimeStampObj1 = OraTimeStampObj.Clone

備考

現行オブジェクトと同じ値の新規OraTimeStampオブジェクトを戻します。


Clone(OraTimeStampTZ)メソッド

適用対象

OraTimeStampTZオブジェクト

説明

OraTimeStampTZオブジェクトのコピーを戻します。

使用方法

Set OraTimeStampTZObj1 = OraTimeStampTZObj.Clone

備考

現行オブジェクトと同じ値の新規OraTimeStampTZオブジェクトを戻します。


Closeメソッド

適用対象

OraDatabaseオブジェクト

OraDynasetオブジェクト

OraSQLStmtオブジェクト

OraServerオブジェクト

説明

このメソッドは何も実行しません。 Visual Basicとの互換性を保つために追加されています。

備考

OraDatabaseオブジェクトとOraDynasetオブジェクトは、いずれもこのメソッドをサポートしません。 OraDatabaseまたはOraDynasetオブジェクトが有効範囲を超えると、参照する対象がなくなり、オブジェクトは自動的にクローズします。


Close(OraBFILE)メソッド

適用対象

OraBFILEオブジェクト

説明

オープンしているBFILEデータ型をクローズします。

使用方法

OraBfile = OraBfile.Close

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] OraBfile OraBFILE型の有効なオブジェクト。

備考

このメソッドは、BFILEにのみ適用されます。LOBには適用できません。


CloseAll(OraBFILE)メソッド

適用対象

OraBFILEオブジェクト

説明

このメソッドは、この接続上でオープンしているすべてのOraBFILEオブジェクトをクローズします。

使用方法

OraBfile.CloseAll

CommitTransメソッド

適用対象

OraConnectionオブジェクト

OraDatabaseオブジェクト

OraSessionオブジェクト

説明

現在のトランザクションを終了し、保留中の変更をすべてデータベースにコミットします。

使用方法

oraconnection.CommitTrans
oradatabase.CommitTrans
orasession.CommitTrans

備考

これらのオブジェクトに対するCommitTransメソッドの動作は、次のように異なります。

注意: OraDatabaseオブジェクトがMicrosoft Transaction Server(MTS)にリストされていて、グローバルMTSトランザクションの一部である場合、このメソッドは無効です。

この例では、BeginTransメソッドを使用して、ダイナセットに対する一連の編集を1つのトランザクションにグループ化する方法を示します。 次に、CommitTransメソッドを使用して変更を受け入れる方法を示します。 このコードをフォームの定義セクションにコピーしてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset As OraDynaset

 Dim fld As OraField

 'Create the OraSession Object.
 Set OraSession = CreateObject("OracleInProcServer.XOraSession")

 'Create the OraDatabase Object by opening a connection to Oracle.
 Set OraDatabase = OraSession. OpenDatabase("ExampleDb", "scott/tiger", 0&)

 'Create the OraDynaset Object.
 Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)

 'Start Transaction processing.
 OraSession.BeginTrans

 'Setup a field object to save object references.
 Set fld = OraDynaset.Fields("sal")

 'Traverse until EOF is reached, setting each employees salary to zero.
 Do Until OraDynaset.EOF = True
   OraDynaset.Edit
   fld.value = 0
   OraDynaset.Update
   OraDynaset.MoveNext
 Loop
 MsgBox "All salaries set to ZERO."

 'Currently, the changes have NOT been committed
 'to the database.

 'End Transaction processing. Commit the changes to the database
 OraSession.CommitTrans
 MsgBox "Salary changes committed."

End Sub


Compare(OraLOB)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

OraBFILEオブジェクト

説明

OraBLOBまたはOraCLOB(またはOraBFILE)オブジェクトのLOB値の指定した部分を、OraBLOBまたはOraCLOB(またはOraBFILE)入力オブジェクトのLOB値と比較します。

使用方法

IsEqual = OraBlob.Compare srcBlob, amount, Offset, srcOffset
IsEqual = OraClob.Compare srcClob, amount, Offset, srcOffset
IsEqual = OraBfile.Compare srcBfile, amount, Offset, srcOffset

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] srcLOB 値を比較するOraBLOBOraCLOBまたはOraBFILE入力オブジェクト。
[in] [オプション] amount 比較するバイト数または文字数を指定する整数。 amountのデフォルト値は、Offsetから各LOBの最後までの値です。
[in] [オプション] Offset このオブジェクトの値に(1を基準とする)オフセットのバイト数(OraBLOBまたはOraBFILE)または文字数(OraCLOB)を指定するための整数。 デフォルト値は1です。
[in] [オプション] srcOffset srcLobオブジェクトの値に(1を基準とする)オフセットのバイト数(OraBLOBまたはOraBFILE)または文字数(OraCLOB)を指定するための整数。 デフォルト値は1です。
[out] IsEqual 比較操作の結果を表すブール値。

備考

Compareメソッドは、比較が正常に終了するとTRUEを戻します。それ以外の場合はFALSEを戻します。

比較するバイト数または文字数が原因で、LOBの一方がその最後を超えて(他方のLOBは超えていない)比較された場合、その比較は失敗となります。 この比較では、指定したOffsetから最後までのデータ量が両方のLOBで厳密に同じ場合にのみ成功となります。

このコールは現在、DBMS_LOB.INSTR()を利用するPL/SQLブロックを実行することによって実装されています。


ConnectSessionメソッド

適用対象

OraSessionオブジェクト

説明

指定したセッションのOraClientオブジェクトに関連付けられている、指定した名前のOraSessionオブジェクトを戻します。

使用方法

Set orasession2 = orasession1.ConnectSession(session_name)

引数

このメソッドの引数は、次のとおりです。

引数 説明
session_name セッション名を指定する文字列。

備考

このメソッドは簡素化の目的で提供されています。現在のセッションのOraClientオブジェクトにあるOraSessionsコレクション全体をスキャンして、session_nameというセッションを検索する処理に相当します。 OraSessionsコレクションには、現在のアプリケーションが作成したセッションのみが含まれます。 これは、セッションは、複数のアプリケーションでは共有できず、同一のアプリケーション内でのみ共有できることを意味します。

この例では、ConnectSessionおよびCreateNamedSessionを使用して、以前に作成されたが保存されていないセッションをアプリケーションで使用する方法を示します。 このコードをフォームの定義セクションにコピーしてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim dfltsess As OraSession
 Dim OraSession As OraSession

 'Create the default OraSession Object.
 Set dfltsess = CreateObject("OracleInProcServer.XOraSession")

 'Try to connect to "ExampleSession". If it does not exist
 'an error is generated.
 On Error GoTo SetName
 Set OraSession = dfltsess.ConnectSession("ExampleSession")
 On Error GoTo 0

 'You can specify other processing here, such as creating a
 ' database and/or dynaset.

Exit Sub

SetName:
'The session named "ExampleSession" was not found, so create it.
Set OraSession = dfltsess.Client.CreateSession("ExampleSession")
Resume Next

End Sub


CopyToClipboardメソッド

適用対象

OraDynasetオブジェクト

説明

ダイナセットの行をクリップボードにテキスト形式でコピーします。

使用方法

OraDynaset.CopyToClipboard(NumOfRows, colsep, rowsep)

引数

このメソッドの引数は、次のとおりです。

引数 説明
NumOfRows ダイナセットからコピーする行数。
colsep [オプション] 列と列の間に挿入する列セパレータ(CHARデータ型)。
rowsep [オプション] 行と行の間に挿入する行セパレータ(CHARデータ型)。

備考

このメソッドを使用すると、Oracle Objects for OLEのキャッシュ(ダイナセット)とWindowsアプリケーション(ExcelやWordなど)間のデータ転送を簡単に実行できます。 CopyToClipboardメソッドは、ダイナセットの現在位置から最終行までのデータをコピーします。

デフォルトの列セパレータは、タブ(ASCII 9)です。

デフォルトの行セパレータは、キャリッジ・リターン(ASCII 13)です。

次の例では、ダイナセットのデータをクリップボードにコピーします。 このコードをフォームの定義セクションに貼り付けてください。次に[F5]を押します。

Sub Form_Load ()
 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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&)
 Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)

'Now call CopyToClipboard to copy the entire dynaset
 OraDynaset.CopyToClipboard -1, chr(9), chr(13)
End Sub

Copy(OraLOB)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

説明

OraBLOBまたはOraCLOB入力オブジェクトの内部LOB値の一部を、このインスタンスの内部LOB値にコピーします。

使用方法

OraBlob.Copy srcBlob, amount, destOffset, srcOffset
OraClob.Copy srcClob, amount, destOffset, srcOffset

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] srcLOB コピー元のOraCLobまたはOraBLOBオブジェクト。
[in] [オプション] amount コピーするバイト数または文字数を指定する整数。 デフォルト値は、srcLOBオブジェクトのBLOBまたはCLOB値のサイズです。
[in] [オプション] destOffset このオブジェクトの値にオフセットのバイト数または文字数を指定するための整数。 デフォルト値は1です。
[in] [オプション] srcOffset srcLOBオブジェクトの値にオフセットのバイト数または文字数を指定するための整数。 デフォルト値は1です。

備考

このメソッドのコール前に、行レベルまたはオブジェクト・レベルでロックを取得する必要があります。


CopyFromFile(OraLOB)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

説明

ローカル・ファイルの一部またはすべてをこのオブジェクトの内部LOB値にロードまたはコピーします。

使用方法

OraBlob.CopyFromFile "blob.bmp" amount, offset, chunksize
OraClob.CopyFromFile "clob.txt" amount, offset, chunksize

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] filename 読み取るファイルの絶対パスとファイル名を指定する文字列。
[in] [オプション] amount コピーする最大バイト数を指定するための整数。 デフォルト値は、総ファイル・サイズです。
[in] [オプション] offset このオブジェクトのBLOBまたはCLOB値の絶対オフセットを指定するための整数。OraBLOBまたはOraBFILEの場合はバイト数、OraCLOBの場合は文字数を示します。 デフォルト値は1です。
[in] [オプション] chunksize 各読込み操作に対するサイズをバイト数で指定するための整数。 chunksizeパラメータが未指定または0(ゼロ)の場合は、amount引数の値が使用されます。つまり、1回でコピー・サイズ全体が転送されます。

備考

このメソッドのコール前に、行レベルまたはオブジェクト・レベルでロックを取得する必要があります。

ファイルは、NLS_LANG設定と同じ書式である必要があります。


注意:

WriteCopyFromFileなど、LOBのメソッドを使用したLOBの操作では、古いデータと比較して新しいデータが短い場合、LOBオブジェクトは自動的に切り捨てられません。 LOBオブジェクトを新しいデータのサイズに縮小するには、Trim(OraLOB)メソッドを使用します。

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

この例では、CopyFromFileメソッドの使用方法を示します。

データベースにPART表があり、その表に有効なLOBデータが含まれていることを確認してください。 また、「LOBデータ型の例で使用されているスキーマ・オブジェクト」の説明に従ってOraLOBスキーマ・オブジェクトをインストールしていることを確認してください。

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim PartImage as OraBLOB

'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

'copy the entire content of partimage.jpg file to LOBS
part.Edit
PartImage.CopyFromFile "partimage.jpg"
part.Update


CopyFromBFILE(OraLOB)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

説明

OraBFILEオブジェクトからLOB値の一部またはすべてをこのオブジェクトのLOB値にコピーします。

使用方法

OraBlob.CopyFromBFile srcBFile, amount, destOffset, srcOffset

OraClob.CopyFromBFile srcBFile, amount, destOffset, srcOffset

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] srcBFile データのコピー元OraBFILEオブジェクト。
[in] [オプション] amount コピーする最大数を指定する整数。OraCLOBの場合は文字数、OraBLOBまたはOraBFILEの場合はバイト数を示します。 デフォルト値は、srcBFileオブジェクトのBFILE値のサイズです。
[in] [オプション] destOffset このインスタンスの絶対オフセットを指定するための整数。 デフォルト値は1です。
[in] [オプション] srcOffset コピー元OraBFILEオブジェクトのBFILE値の絶対オフセットを指定するための整数。 デフォルト値は1です。

備考

このメソッドのコール前に、行レベルまたはオブジェクト・レベルでロックを取得する必要があります。

シングルバイト・キャラクタ・セットの場合、OraBFileオブジェクトはデータベースと同じキャラクタ・セットである必要があります。

データベースで可変長キャラクタ・セットを使用している場合、OraClob.CopyFromBFileメソッドに渡されるOraBFileオブジェクトはUCS2キャラクタ・セットのファイルを指している必要があります。


CopyToFile(OraLOB/BFILE)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

OraBFILEオブジェクト

説明

このオブジェクトの内部LOB値の一部またはすべてをローカル・ファイルにコピーします。

使用方法

OraBlob.CopyToFile "blob.bmp" amount,offset,chunksize
OraClob.CopyToFile "clob.txt" amount,offset,chunksize
OraBfile.CopyToFile "bfile.bmp" amount,offset,chunksize

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] filename 書込み先ファイルの絶対パスとファイル名を指定する文字列。
[in] [オプション] amount コピーする最大数を指定する整数。OraBLOB/OraBFILEの場合はバイト数、OraCLOBの場合は文字数を示します。 デフォルト値は、LOBまたはBFILEのサイズです。
[in] [オプション] offset このインスタンスのLOBまたはBFILE値の絶対オフセットを指定するための整数。OraBLOB/OraBFILEの場合はバイト数、OraCLOBの場合は文字数を示します。 デフォルト値は1です。
[in] [オプション] chunksize 各書込み操作に対するサイズをバイト数で指定するための整数。 chunksizeパラメータが未指定または0(ゼロ)の場合は、amount引数の値が使用されます。つまり、1回でコピー・サイズ全体が転送されます。

備考

ファイルは、NLS_LANG設定と同じ書式です。

ファイルがすでに存在している場合は、その内容が上書きされます。

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

この例では、CopyToFileメソッドの使用方法を示します。

データベースにPART表があり、その表に有効なLOBデータが含まれていることを確認してください。 また、「LOBデータ型の例で使用されているスキーマ・オブジェクト」の説明に従ってOraLOBスキーマ・オブジェクトをインストールしていることを確認してください。

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim PartDesc as OraCLOB

'Create the OraSession Object.
Set OraSession = CreateObject("OracleInProcServer.XOraSession")

'Create the OraDatabase Object by opening a connection to Oracle.
Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&

'Create a Dynaset containing a BLOB and a CLOB column
set part = OraDatabase.CreateDynaset ("select * from part where" & _
                "part_id = 1234",0)
set PartDesc = part.Fields("part_desc").Value

'Copy the entire LOB content to partdesc.txt file
PartDesc.CopyToFile "partdesc.txt"


Cos(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

ラジアンで指定されたOraNumberオブジェクトのコサインを計算します。

使用方法

OraNumber.Cos

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


CreateAQメソッド

適用対象

OraDatabaseオブジェクト

説明

OraAQオブジェクトのインスタンスを作成します。

使用方法

Set OraAq = OraDatabase.CreateAQ(Qname)

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] Qname データベース内のキュー名を表す文字列。

備考

なし


CreateCustomDynasetメソッド

適用対象

OraDatabaseオブジェクト

説明

カスタム・キャッシュ・パラメータとフェッチ・パラメータを使用して、ダイナセットを作成します。

使用方法

Set oradynaset = oradatabase.CreateCustomDynaset(sql_statement, options, slicesize, perblock, blocks, FetchLimit, FetchSize, SnapShotID)

引数

このメソッドの引数は、次のとおりです。

引数 説明
sql_statement 有効なOracle SQL SELECT文。
slicesize キャッシュ・スライス・サイズ。
perblock ブロック当たりのキャッシュ・スライス。
blocks キャッシュのブロックの最大数。
FetchLimit フェッチ配列のサイズ。
FetchSize フェッチ配列のバッファ・サイズ。
options ダイナセットのオプション状態を示すビット・フラグ。 それぞれの値を追加することで1つ以上のオプションを組み合せることができます。 定数ORADYN_DEFAULTまたは値&H0&を指定すると、次のデフォルトがダイナセットに指定されます。
  • データベースのVisual Basicモードのように動作します。明示的に設定されていないフィールド値はNULLに設定され、データベース列のデフォルトは上書きされます。

  • データベース・パラメータの自動バインディングを実行します。

  • データベースから取り出された文字列データから、後続するブランクが削除されます。

  • 更新可能なダイナセットを作成します。

  • クライアント上でデータをキャッシュします。

  • ダイナセットの作成時にMoveFirst操作が強制的に実行されます。

  • 読取りの一貫性を保持します。

SnapShotID [オプション] OraDynasetSnapShotプロパティから取得するスナップショットのID。

定数

次の表に、オプション・フラグの定数とその値を示します。

定数 説明
ORADYN_DEFAULT &H0& デフォルトの動作を受け入れる。
ORADYN_NO_AUTOBIND &H1& データベース・パラメータの自動的なバインドを実行しない。
ORADYN_NO_BLANKSTRIP &H2& データベースから取り出された文字列データから、後続するブランクを削除しない。
ORADYN_READONLY &H4& ダイナセットを読取り専用にする。
ORADYN_NOCACHE &H8& ダイナセット用のローカル・データ・キャッシュを作成しない。ローカル・キャッシュがない場合は、ダイナセットの以前の行は使用できません。ただし、データベースからのデータの取出し(移動操作)と行からのデータの取出し(フィールド操作)のパフォーマンスは向上します。 ダイナセットの行を順に取り出すアプリケーションでは、パフォーマンスを向上し、リソースの使用を減らすため、このオプションを使用します。
ORADYN_ORAMODE &H10& データベースのOracleモードと同じように動作するが、作成中のダイナセットにのみ影響を与える。 データベースがOracleモードで作成されている場合、ダイナセットは(互換性を保つために)そのプロパティを継承します。
ORADYN_NO_REFETCH &H20& データベースのORADB_NO_REFETCHモードと同じように動作するが、作成中のダイナセットにのみ影響を与える。 データベースがORADB_NO_REFETCHモードで作成されている場合、ダイナセットは互換性を保つためにそのプロパティを継承します。
ORADYN_N_MOVEFIRST &H40& ダイナセットの作成時にMoveFirstを強制的に実行しない。 BOFEOFは両方ともTRUEです。
ORADYN_DIRTY_WRITE &H80& UpdateおよびDeleteメソッドで、読取り一貫性をチェックしない。

これらの値は、次の位置にあるoraconst.txtファイルにあります。

ORACLE_BASE\ORACLE_HOME\rdbms\oo4o

備考

SQL文は、SELECT文であることが必要です。それ以外の場合はエラーが戻されます。 単純なビューやシノニムなどの機能を自由に使用できます。 スキーマの参照、列の別名、表の結合、ネストされたSELECT文、およびリモート・データベースの参照機能も使用できます。ただし、どの場合もダイナセットは読取り専用になります。

"sal + 100"または"abs(sal)"など、複雑な式またはSQLファンクションを列で使用すると、更新可能なダイナセットになりますが、複雑な式に関連付けられている列は更新できません。

通常、オブジェクト名は変更されませんが、特定の場合は変更できます。 たとえば、列の別名を使用する場合は、フィールドを名前で参照する別名を使用する必要があります。 また、複雑な式の中で空白を使用する場合、データベースで空白が削除されるため、列は空白を使用せずに参照する必要があります。 フィールドは、常に番号で参照できます。つまり、SELECT文の中の位置の順に従って参照できます。

SQL SELECT文を実行すると、データベースに対するコミット操作がデフォルトで生成されます。 これを回避するには、CreateDynasetメソッドの使用前に、セッション・オブジェクトにBeginTransメソッドを使用します。

結果のダイナセットが更新可能であるかどうかは、Oracle SQLの更新可能性規則、付与されているアクセス権、およびオプション・フラグによって決まります。

更新可能性条件

ダイナセットを更新可能にするためには、次の3つの条件を満たす必要があります。

SQL文はこれらの基準を満たしていない場合でも処理されますが、結果のダイナセットは更新不可になり、ダイナセットのUpdatableプロパティはFALSEを戻します。

このメソッドは、作成されたダイナセットの最初の行に自動的に移動します。

SQLのバインド変数は、OraParametersコレクションと組み合せて使用できます。

この例では、CreateCustomDynasetメソッドの使用方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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 the OraDynaset Object using sliceSize as 256,perblock size as 16, no. of
 'blocks as 20, fetchLimit as 20,FetchSize as 4096

 Set OraDynaset = OraDatabase.CreateCustomDynaset("select empno, " & _
               "ename from emp", 0&,256,16,20,20,4096)

 'Display the first record.
 MsgBox "Employee " & OraDynaset.Fields("empno").value & ", #" & _
                OraDynaset.Fields("ename").value

End Sub


関連項目:

SnapShotプロパティ


CreateDatabasePoolメソッド

適用対象

OraSessionオブジェクト

説明

OraDatabaseオブジェクトのプールを作成します。 プールは1つのOraSessionオブジェクトに1つのみ作成できます。

使用方法

CreateDatabasePool (long initialSize, long maxSize, long timeoutValue, BSTR database_name, BSTR connect_string, long options)

引数

このメソッドの引数は、次のとおりです。

引数 説明
initialSize プールの初期サイズ。
maxSize プールが拡大可能な最大サイズ。
timeoutValue プール内のOraDatabaseオブジェクトが、指定したtimeoutValue値の間アイドル状態の場合、そのオブジェクトが含まれるデータベース接続は切断されます。 この接続は、プール内のアイテムが再利用されると再びオープンします。 この値は秒単位です。
database_name データ・コントロールをデータベースに接続するときに使用するOracleネットワーク指定子。
connectString Oracleデータベースに接続するときに使用するユーザー名とパスワード。
options データベースのオプション・モードの設定に使用するビット・フラグ文字。 options = 0の場合は、デフォルトのモード設定が適用されます。 使用可能なモードは、「定数」を参照してください。

備考

Oracleデータベースへの接続を確立するには、OraSessionオブジェクトのOpenDatabaseメソッドが使用されます。 このメソッドは、OraDatabaseオブジェクトへの参照を戻します。この参照はSQL文とPL/SQLブロックの実行に使用されます。 OO4Oの接続プールは、OraDatabaseオブジェクトのプールです。 このプールは、OraSessionインタフェースのCreateDatabasePoolメソッドをコールすることによって作成されます。

このコールでは、次の場合に例外が発生します。

OraSessionオブジェクトのLastServerErrプロパティには、Oracle Databaseのエラーが原因で発生した例外の特定原因を示すコードが含まれます。

次の接続エラーが戻される可能性があります。

ORA-28001 「パスワードが期限切れです。」

ChangePasswordメソッドを使用すると、パスワードを変更できます。


CreateDynasetメソッド

適用対象

OraDatabaseオブジェクト

説明

指定したSQL SELECT文とオプションから、OraDynasetオブジェクトを作成します。

使用方法

Set oradynaset = oradatabase.CreateDynaset(sql_statement, options, SnapShotID)
Set oradynaset = oradatabase.DbCreateDynaset(sql_statement, options, SnapShotID)

引数

このメソッドの引数は、次のとおりです。

引数 説明
sql_statement 有効なOracle SQL SELECT文を含んだ文字列。
options ダイナセットのオプション状態を示すビット・フラグ。 それぞれの値を追加することで1つ以上のオプションを組み合せることができます。 定数ORADYN_DEFAULTまたは値&H0&を指定すると、次のデフォルトがダイナセットに指定されます。
  • データベースのVisual Basicモードのように動作します。明示的に設定されていないフィールド値はNULLに設定され、データベース列のデフォルトは上書きされます。

  • データベース・パラメータの自動バインディングを実行します。

  • データベースから取り出された文字列データから、後続するブランクが削除されます。

  • 更新可能なダイナセットを作成します。

  • クライアント上でデータをキャッシュします。

  • ダイナセットの作成時にMoveFirstが強制的に実行されます。

  • 読取りの一貫性を保持します。

SnapShotID [オプション] OraDynasetオブジェクトのSnapShotプロパティから取得するスナップショットのID

定数

次の表に、オプション・フラグの定数とその値を示します。

定数 説明
ORADYN_DEFAULT &H0& デフォルトの動作を受け入れる。
ORADYN_NO_AUTOBIND &H1& データベース・パラメータの自動的なバインドを実行しない。
ORADYN_NO_BLANKSTRIP &H2& データベースから取り出された文字列データから、後続するブランクを削除しない。
ORADYN_READONLY &H4& ダイナセットを読取り専用にする。
ORADYN_NOCACHE &H8& ダイナセット用のローカル・データ・キャッシュを作成しない。ローカル・キャッシュがない場合は、ダイナセットの以前の行は使用できません。ただし、データベースからのデータの取出し(移動操作)と行からのデータの取出し(フィールド操作)のパフォーマンスは向上します。 ダイナセットの行を順に取り出すアプリケーションでは、パフォーマンスを向上し、リソースの使用を減らすため、このオプションを使用します。
ORADYN_ORAMODE &H10& データベースのOracleモードと同じように動作するが、作成中のダイナセットにのみ影響を与える。 データベースがOracleモードで作成されている場合、ダイナセットは(互換性を保つために)そのプロパティを継承します。
ORADYN_NO_REFETCH &H20& データベースのORADB_NO_REFETCHモードと同じように動作するが、作成中のダイナセットにのみ影響を与える。 データベースがORADB_NO_REFETCHモードで作成されている場合、ダイナセットは互換性を保つためにそのプロパティを継承します。
ORADYN_NO_MOVEFIRST &H40& ダイナセットの作成時にMoveFirstを強制的に実行しない。 BOFEOFは両方ともTRUEです。
ORADYN_DIRTY_WRITE &H80& UpdateおよびDeleteメソッドで、読取り一貫性をチェックしない。

これらの値は、oraconst.txtファイルにあります。

備考

単純なビューやシノニムなどの機能を自由に使用できます。 スキーマの参照、列の別名、表の結合、ネストされたSELECT文、およびリモート・データベースの参照機能も使用できます。ただし、どの場合もダイナセットは読取り専用です。

"sal + 100"または"abs(sal)"など、複雑な式またはSQLファンクションを列で使用すると、更新可能なダイナセットになりますが、複雑な式に関連付けられている列は更新できません。

通常、オブジェクト名は変更されませんが、特定の場合は変更できます。 たとえば、列の別名を使用する場合は、フィールドを名前で参照する別名を使用する必要があります。 また、複雑な式の中で空白を使用する場合、データベースで空白が削除されるため、列は空白を使用せずに参照する必要があります。 フィールドは、常に番号で参照できます。つまり、SELECT文の中の位置の順に従って参照できます。

Updateメソッドを実行すると、データベースに対するコミット操作がデフォルトで生成されます。 これを回避するには、CreateDynasetメソッドの使用前に、セッション・オブジェクトにBeginTransメソッドを使用します。

結果のダイナセットが更新可能であるかどうかは、Oracle SQLの更新可能性規則、付与されているアクセス権、およびオプション・フラグによって決まります。 ダイナセットを更新可能にするためには、次の条件を満たす必要があります。

SQL文はこれらの基準を満たしていない場合でも処理されますが、結果のダイナセットは更新不可になり、ダイナセットのUpdatableプロパティはFALSEを戻します。 このメソッドは、作成されたダイナセットの最初の行に自動的に移動します。 SQLのバインド変数は、OraParametersコレクションと組み合せて使用できます。

SnapShotIDオプションを指定すると、作成したSQLStmtオブジェクト用にスナップショット記述子が作成されます。 このプロパティは、他のSQLStmtまたはOraDynasetオブジェクトを作成するために、後で取得して使用できます。 実行スナップショットによって、OraDatabaseオブジェクトの複数のコンテキストで実行される複数のコマンドが、データベースのコミット済データの同一スナップショットで操作できるようになります。

この例では、CreateObjectOpenDatabaseおよびCreateDynasetメソッドの使用方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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 the OraDynaset Object.
 Set OraDynaset = OraDatabase.CreateDynaset("select empno, ename from emp", 0&)

 'Display the first record.
 MsgBox "Employee " & OraDynaset.Fields("empno").value & ", #" & _
                OraDynaset.Fields("ename").value

End Sub


CreateIteratorメソッド

適用対象

OraCollectionオブジェクト

説明

コレクションの要素をスキャンするイテレータを作成します。

使用方法

OraCollection.CreateIterator

備考

このメソッドは、Oracleコレクションの要素をスキャンするイテレータを作成します。 イテレータを使用してコレクション要素にアクセスする方が、コレクションのインスタンスで索引を使用するより高速です。

例: OraCollectionイテレータ

次の例では、Oracleコレクション・イテレータの使用方法を示します。

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

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 courses from" & _
                 "division where name='History'", 0&)

'Retrieve a Courses column from Division.
Set CourseList = OraDynaset.Fields("Courses").Value

'Create the iterator
CourseList.CreateIterator

'Initialize the iterator to point to the beginning of a collection
CourseList.InitIterator

'Call IterNext to read CourseList until the end
While CourseList.EOC = False
    Set Course = CourseList.ElementValue
    course_no = Course.course_no
    Title = Course.Title
    Credits = Course.Credits
    CourseList.IterNext
Wend

'Call IterPrev to read CourseList until the beginning
CourseList.IterPrev

While CourseList.BOC = False
    Set Course = CourseList.ElementValue
    course_no = Course.course_no
    Title = Course.Title
    Credits = Course.Credits
    CourseList.IterPrev
Wend


CreateNamedSessionメソッド

適用対象

OraSessionオブジェクト

説明

新しい名前付きOraSessionオブジェクトを作成し、戻します。

使用方法

orasession = orasession.CreateNamedSession(session_name)

引数

このメソッドの引数は、次のとおりです。

引数 説明
session_name セッション名を指定する文字列。

備考

このメソッドを使用すると、参照先のセッション・オブジェクトが有効範囲内にあるかぎり、後で同じアプリケーションで参照できる名前付きセッションを作成できます。 セッションが作成されると、ConnectSessionメソッドまたは各OraClientオブジェクトのOraSessionsコレクションを介して、アプリケーションがそのセッションを参照できます。 OraSessionsコレクションには、現在のアプリケーションが作成したセッションのみが含まれます。 したがって、複数のアプリケーション間でセッションの共有はできません。同一のアプリケーション内でのみ共有できます。

このメソッドは簡素化の目的で提供されています。OraClientオブジェクトのCreateSessionメソッドと同じです。

この例では、ConnectSessionおよびCreateNamedSessionを使用して、以前に作成されたが保存されていないセッションをアプリケーションで使用する方法を示します。 このコードをフォームの定義セクションにコピーしてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim dfltsess As OraSession
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset As OraDynaset

 'Create the default OraSession Object.
 Set dfltsess = CreateObject("OracleInProcServer.XOraSession")

 'Try to connect to "ExampleSession". If it does not exist
 'an error is generated.
 On Error GoTo SetName
 Set OraSession = dfltsess.ConnectSession("ExampleSession")
 On Error GoTo 0

'Create the OraDatabase Object by opening a connection to Oracle.
 Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)

 'Create the OraDynaset Object.
 Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)

 'Display or manipulate data here

Exit Sub

SetName:
'The session named "ExampleSession" was not found, so create it.
Set OraSession = dfltsess.CreateNamedSession("ExampleSession")
Resume Next

End Sub


CreateOraIntervalDSメソッド

適用対象

OraSessionオブジェクト

説明

OraIntervalDSオブジェクトを作成します。 このOraIntervalDSは、Oracle INTERVAL DAY TO SECONDデータ型を表します。

使用方法

Set OraIntervalDSObj = OraSession.CreateOraIntervalDS value

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value Variant型の文字列、数値、OraIntervalDSまたはOraNumberオブジェクト。

戻り値

OraIntervalDSオブジェクト

備考

OraIntervalDSオブジェクトの作成前に、OraSessionオブジェクトを作成する必要があります。

valueVariant型の文字列の場合は、[+/-] Day HH:MI:SSxFFの書式で記述する必要があります。

valueが数値の場合、提供される値は、構成されたOraIntervalDSが表す合計日数を表す必要があります。

Variant型のOraIntervalDSを渡すこともできます。 クローンのOraIntervalDSが戻されます。

Dim oraIDS as OraIntervalDS
Dim oraIDS2 as OraIntervalDS
Dim oraNum  as OraNumber

'Create an OraIntervalDS using a string which represents 1 days, 2 hours,
'3 minutes, 4 seconds and 500000 nanoseconds
Set oraIDS = oo4oSession.CreateOraIntervalDS("1 2:3:4.005")

'Create an OraIntervalDS using a numeric value which represents
'1 days and 12 hours
Set oraIDS = oo4oSession.CreateOraIntervalDS(1.5)

'Create an OraIntervalDS using an OraIntervalDS
Set oraIDS2 = oo4oSession.CreateOraIntervalDS(oraIDS)


CreateOraIntervalYMメソッド

適用対象

OraSessionオブジェクト

説明

OraIntervalYMオブジェクトを作成します。 このOraIntervalYMは、Oracle INTERVAL YEAR TO MONTHデータ型を表します。

使用方法

Set OraIntervalYMObj = OraSession.CreateOraIntervalYM value

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value Variant型の文字列、数値またはOraIntervalYMオブジェクト。

戻り値

OraIntervalYMオブジェクト

備考

OraIntervalYMオブジェクトの作成前に、OraSessionオブジェクトを作成する必要があります。

valueVariant型の文字列の場合は、[+/-] YEARS-MONTHSの書式で記述する必要があります。

valueが数値の場合、提供される値は、構成されたOraIntervalYMオブジェクトが表す合計年数を表す必要があります。

Variant型のOraIntervalYMを渡すこともできます。 クローンのOraIntervalYMオブジェクトが戻されます。

Dim oraIYM as OraIntervalYM
Dim oraIYM2 as OraIntervalYM

'Create an OraIntervalYM using a string which represents 1 year and 2 months
Set oraIYM = oo4oSession.CreateOraIntervalYM("1- 2")

'Create an OraIntervalYM using a numeric value which represents
'1 year and 6 months
Set oraIYM = oo4oSession.CreateOraIntervalYM(1.5)

'Create an OraIntervalYM using an OraIntervalYM
Set oraIYM2 = oo4oSession.CreateOraIntervalYM(oraIYM)


CreateOraNumberメソッド

適用対象

OraSessionオブジェクト

説明

OraNumberオブジェクトを作成します。 このOraNumberは、Oracle NUMBERデータ型を表します。

使用方法

OraNumber = OraSession.CreateOraNumber(inital_value, format)

引数

このメソッドの引数は、次のとおりです。

引数 説明
initial_value OraNumberの初期値。 Variant型のOraNumber、文字列または数値。
format [オプション] OraNumber値を表示するときに使用する書式文字列。

戻り値

OraNumberオブジェクト

備考

書式文字列の詳細は、OraNumberオブジェクトのformatプロパティを参照してください。


CreateOraObject(OraDatabase)メソッド

適用対象

OraDatabaseオブジェクト

説明

キャッシュに値インスタンス/参照可能オブジェクトを作成し、関連付けられているOO4Oオブジェクトを戻します。

使用方法

OraObject1 = OraDatabase.CreateOraObject(schema_name)
OraRef1 = OraDatabase.CreateOraObject(schema_name,table_name)
OraCollection1 = OraDatabase.CreateOraObject(schema_name)

引数

このメソッドの引数は、次のとおりです。

引数 説明
OraObject1 新しく作成する値インスタンスを表す有効なOraObjectオブジェクト。
OraRef1 新しく作成する参照可能オブジェクトを表す有効なOraRefオブジェクト。
OraCollection 新しく作成するコレクション・インスタンスを表す有効なOraCollectionオブジェクト。
schema_name 作成する値インスタンスのスキーマ名を指定する文字列。
table_name 作成する参照可能オブジェクトの表名を指定する文字列。

備考

table_name引数を指定しないと、クライアントに値インスタンスが作成され、OraObjectまたはOraCollectionオブジェクトが戻されます。 table_name引数を指定すると、データベースに参照可能オブジェクトが作成され、関連付けられているOraRefオブジェクトが戻されます。

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

例: OraObjectオブジェクトの作成

次の例では、CreateOraObjectメソッドを使用して値インスタンスを挿入する方法を示します。 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.CreateOraObject("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 ('Eric',30,:ADDRESS)")


例: OraRefオブジェクトの作成

次の例では、CreateOraObjectメソッドを使用して参照可能オブジェクトを挿入する方法を示します。

この例では、新規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&)

'CreteOraObject   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

CreateOraTimeStampメソッド

適用対象

OraSessionオブジェクト

説明

新規OraTimeStampオブジェクトを作成します。 このOraTimeStampメソッドは、Oracle TIMESTAMPまたはOracle TIMESTAMP WITH LOCAL TIME ZONEデータ型を表します。

使用方法

Set OraTimeStampObj = OraSession.CreateOraTimeStamp value format

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value Variant型の文字列、日付またはOraTimeStamp
[in] [オプション] format OraTimeStampオブジェクトを文字列として表示または解析するときに使用するTimeStamp書式文字列。 書式を指定しない場合、TimeStamp文字列は、セッションのTIMESTAMP書式(NLS_TIMESTAMP_FORMAT書式)を使用して解析されます。

戻り値

OraTimeStampオブジェクト

備考

OraTimeStampオブジェクトの作成前に、OraSessionオブジェクトを作成する必要があります。

valueVariant型の文字列の場合、文字列の書式は、format引数で指定した日時書式と一致する必要があります。 formatを指定しない場合、文字列の書式は、セッションのTIMESTAMP書式(NLS_TIMESTAMP_FORMAT)と一致する必要があります。

formatを指定した場合は、その書式がOraTimeStampFormatプロパティに格納されます。指定しない場合は、セッションのTIMESTAMP書式がOraTimeStampFormatプロパティに格納されます。

Dim oraTS as OraTimeStamp
Dim oraTS1 as OraTimeStamp
Dim date as Date

'Create an OraTimeStamp using a string assuming the session
'TIMESTAMP format is "DD-MON-RR HH.MI.SSXFF AM"
Set oraTS = oo4oSession.CreateOraTimeStamp("12-JAN-2003 12.0.0.0 PM")

'Create an OraTimeStamp using a string and a format
Set oraTS = oo4oSession.CreateOraTimeStamp("2003-01-12 12:00:00 PM", _
         "YYYY-MM-DD HH:MI:SS AM")

'Create an OraTimeStamp using a Date
date = #1/12/2003#

Set oraTS = oo4oSession.CreateOraTimeStamp(date)

'Create an OraTimeStamp  using an OraTimeStamp
Set oraTS1 = oo4oSession.CreateOraTimeStamp(oraTS)


CreateOraTimeStampTZメソッド

適用対象

OraSessionオブジェクト

説明

新規OraTimeStampTZオブジェクトを作成します。 このOraTimeStampTZオブジェクトは、Oracle TIMESTAMP WITH TIME ZONEデータ型を表します。

使用方法

Set OraTimeStampTZObj = OraSession.CreateOraTimeStampTZ value format

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value Variant型の文字列、日付またはOraTimeStampTZ
[in] [オプション] format OraTimeStampTZオブジェクトを文字列として表示または解析するときに使用するTIMESTAMP WITH TIME ZONE書式文字列。 書式を指定しない場合、TIMESTAMP WITH TIME ZONE文字列は、セッションのTIMESTAMP WITH TIME ZONE書式(NLS_TIMESTAMP_TZ_FORMAT書式)を使用して解析されます。

戻り値

OraTimeStampTZオブジェクト

備考

OraTimeStampTZオブジェクトの作成前に、OraSessionオブジェクトを作成する必要があります。

valueVariant型の文字列の場合、文字列の書式は、書式を指定した場合は書式引数で指定した日時書式と一致する必要があります。書式を指定しない場合はセッションのTIMESTAMP WITH TIME ZONE書式(NLS_TIMESTAMP_TZ_FORMAT)と一致する必要があります。

valueVariant型の日付の場合、Dateの日時値は、セッションのタイムゾーンの日時値として解析されます。 OraTimeStampTZオブジェクトのTimeZoneプロパティには、セッションのタイムゾーンが含まれます。

formatを指定した場合は、その書式がOraTimeStampTZオブジェクトのFormatプロパティに格納されます。指定しない場合は、セッションのTIMESTAMP WITH TIME ZONE書式がOraTimeStampTZオブジェクトのFormatプロパティに格納されます。

Dim oraTSZ as OraTimeStampTZ
Dim oraTSZ1 as OraTimeStampTZ
Dim date as Date

'Create an OraTimeStampTZ using a string assuming the session
'TIMESTAMP WITH TIME ZONE format is "DD-MON-RR HH.MI.SSXFF AM TZH:TZM"
Set oraTSZ = oo4oSession.CreateOraTimeStampTZ( "12-JAN-2003" & _
             "12.0.0.0 PM -03:00")

'Create an OraTimeStampTZ using a string and a format
Set oraTSZ = oo4oSession.CreateOraTimeStampTZ( "2003-01-12" & _
             "12:00:00 PM -03:00", "YYYY-MM-DD HH:MI:SS AM TZH:TZM")

'Create an OraTimeStampTZ using a Date
date = #1/12/2003#
Set oraTSZ = oo4oSession.CreateOraTimeStampTZ(date)

'Create an OraTimeStampTZ  using an OraTimeStampTZ
Set oraTSZ1 = oo4oSession.CreateOraTimeStampTZ(oraTSZ)


CreatePLSQLCustomDynasetメソッド

適用対象

OraDatabaseオブジェクト

使用不可になっています。

これらのタスクの実行方法については、「PL/SQLカーソル変数を戻す方法」を参照してください。

説明

カスタム・キャッシュ・パラメータとフェッチ・パラメータを使用して、PL/SQLカーソルからダイナセットを作成します。SQL文は、ストアド・プロシージャまたは無名ブロックである必要があります。 作成されるダイナセットは読取り専用です。 SQLプロパティを設定しようとすると、エラーになります。 ダイナセットは、新しいパラメータを指定してリフレッシュできます。

使用方法

set OraDynaset = CreatePlsqlCustomDynaset(SQLStatement, CursorName, options, slicesize, perblock, blocks, FetchLimit, FetchSize)

引数

このメソッドの引数は、次のとおりです。

引数 説明
SQLStatement 有効なOracle PL/SQLストアド・プロシージャまたは無名ブロック。
CursorName PL/SQLストアド・プロシージャで作成されるカーソルの名前。
options ダイナセットのオプション状態を示すビット・フラグ。 それぞれの値を追加することで1つ以上のオプションを組み合せることができます。
slicesize キャッシュ・スライス・サイズ。
perblock ブロック当たりのキャッシュ・スライス。
blocks キャッシュのブロックの最大数。
FetchLimit フェッチ配列のサイズ。
FetchSize フェッチ配列のバッファ・サイズ。

定数

オプション・フラグの値は、次のとおりです。

定数 説明
ORADYN_DEFAULT &H0& デフォルトの動作を受け入れる。
ORADYN_NO_AUTOBIND &H1& データベース・パラメータの自動的なバインドを実行しない。
ORADYN_NO_BLANKSTRIP &H2& データベースから取り出された文字列データから、後続するブランクを削除しない。
ORADYN_NOCACHE &H8& ダイナセット用のローカル・データ・キャッシュを作成しない。ローカル・キャッシュがない場合は、ダイナセットの以前の行は使用できません。ただし、データベースからのデータの取出し(移動操作)と行からのデータの取出し(フィールド操作)のパフォーマンスは向上します。 ダイナセットの行を順に取り出すアプリケーションでは、パフォーマンスを向上し、リソースの使用を減らすため、このオプションを使用します。
ORADYN_NO_MOVEFIRST &H40& ダイナセットの作成時にMoveFirstを強制的に実行しない。 BOFEOFは両方ともTRUEです。

これらの値は、oraconst.txtファイルにあります。

備考

SQL文は、PL/SQLストアド・プロシージャであることが必要で、PL/SQLの無名ブロックを実行する場合のように、コールの前後にBEGINENDを付ける必要があります。これ以外の場合は、エラーが戻ります。 CursorName引数は、ストアド・プロシージャまたはPL/SQLの無名ブロックの中で作成されたカーソル名と正確に一致している必要があります。一致していない場合は、エラーが戻ります。 ストアド・プロシージャ内で作成されたカーソルは、有効なSQL SELECT文を表す必要があります。

ストアド・プロシージャにより、出力パラメータとしてカーソルが戻される場合は、OraParametersAddメソッドを使用してPL/SQLカーソルの変数をバインドする必要はありません。 この場合も、PL/SQLのバインド変数を、OraParametersコレクションと組み合せて使用できます。

このメソッドは、作成されたダイナセットの最初の行に自動的に移動します。

ORADYN_READONLYORADYN_ORAMODEORADYN_NO_REFETCHORADYN_DIRTY_WRITEの各オプションを指定しても、ダイナセットの作成には影響を与えません。


CreatePLSQLDynasetメソッド

適用対象

OraDatabaseオブジェクト

使用不可になっています。

これらのタスクの実行方法については、「PL/SQLカーソル変数を戻す方法」を参照してください。

説明

PL/SQLカーソルからダイナセットを作成します。 SQL文は、ストアド・プロシージャまたは無名ブロックである必要があります。 作成されるダイナセットは読取り専用であり、SQLプロパティを設定しようとすると、エラーになります。 カーソル以外のダイナセットと同様、新しいパラメータを指定してこのダイナセットをリフレッシュできます。

使用方法

set OraDynaset = CreatePLSQLDynaset(SQLStatement, CursorName, options)

引数

引数 説明
SQLStatement 有効なOracle PL/SQLストアド・プロシージャまたは無名ブロック。
CursorName PL/SQLストアド・プロシージャで作成されるカーソルの名前。
options ダイナセットのオプション状態を示すビット・フラグ。 それぞれの値を追加することで1つ以上のオプションを組み合せることができます。

定数

オプション・フラグの値は、次のとおりです。

定数 説明
ORADYN_DEFAULT &H0& デフォルトの動作を受け入れる。
ORADYN_NO_BLANKSTRIP &H2& データベースから取り出された文字列データから、後続するブランクを削除しない。
ORADYN_NOCACHE &H8& ダイナセット用のローカル・データ・キャッシュを作成しない。ローカル・キャッシュがない場合は、ダイナセットの以前の行は使用できません。ただし、データベースからのデータの取出し(移動操作)と行からのデータの取出し(フィールド操作)のパフォーマンスは向上します。 ダイナセットの行を順に取り出すアプリケーションでは、パフォーマンスを向上し、リソースの使用を減らすため、このオプションを使用します。
ORADYN_NO_MOVEFIRST &H40& ダイナセットの作成時にMoveFirst操作を強制的に実行しない。 BOFEOFは両方ともTRUEです。

これらの値は、oraconst.txtファイルにあります。

備考

SQL文は、PL/SQLストアド・プロシージャであることが必要で、PL/SQLの無名ブロックを実行する場合のように、コールの前後にBEGIN文とEND文を付ける必要があります。これ以外の場合は、エラーが戻ります。 CursorName引数は、ストアド・プロシージャまたはPL/SQLの無名ブロックの中で作成されたカーソル名と正確に一致している必要があります。一致していない場合は、エラーが戻ります。 ストアド・プロシージャ内で作成されたカーソルは、有効なSQL SELECT文を表す必要があります。

ストアド・プロシージャにより、出力パラメータとしてカーソルが戻される場合は、OraParameters.Addメソッドを使用してPL/SQLカーソルの変数をバインドする必要はありません。 この場合も、PL/SQLのバインド変数を、OraParametersコレクションと組み合せて使用できます。

このメソッドは、作成されたダイナセットの最初の行に自動的に移動します。

ORADYN_READONLYORADYN_ORAMODEORADYN_NO_REFETCHまたはORADYN_DIRTY_WRITEの各オプションを指定しても、ダイナセットの作成には影響を与えません。

この例では、CreatePlsqlDynasetメソッドとRefreshメソッドでPL/SQLカーソルを使用する方法を示します。 ここでは、異なる値のDEPTNOパラメータに対するPL/SQLカーソルをダイナセットとして戻します。 対応するストアド・プロシージャ(EMPCUR.SQLにあります)がOracleデータベースで使用可能であることを確認します。このコードをフォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase

 Dim OraDynaset 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 the Deptno parameter
 OraDatabase.Parameters.Add "DEPTNO", 10, ORAPARM_INPUT
 OraDatabase.Parameters("DEPTNO").ServerType = ORATYPE_NUMBER

' Create OraDynaset based on "EmpCursor" created in stored procedure.
 Set OraDynaset = OraDatabase.CreatePLSQLDynaset("Begin Employee.GetEmpData" & _
               "(:DEPTNO,:EmpCursor); end;", "EmpCursor", 0&)

 'Should display KING
 MsgBox OraDynaset.Fields("ENAME").Value

 'Should display 7839
 MsgBox OraDynaset.Fields("EMPNO").Value

 ' Now set the deptno value to 20
 OraDatabase.Parameters("DEPTNO").Value = 20

 'Refresh the dynaset
 OraDynaset.Refresh

 'Should display JONES
 MsgBox OraDynaset.Fields("ENAME").Value

 'Should display 7566
 MsgBox OraDynaset.Fields("EMPNO").Value

  'Remove the parameter.
 OraDatabase.Parameters.Remove ("DEPTNO")

 End Sub


CreateSessionメソッド

適用対象

OraClientオブジェクト

説明

新しい名前付きOraSessionオブジェクトを作成します。

使用方法

orasession = oraclient.CreateSession(session_name)

引数

このメソッドの引数は、次のとおりです。

引数 説明
session_name セッション名を指定する文字列。

備考

このメソッドを使用すると、作成時にOraSessionオブジェクトを明示的に保存しなくても、後で同じアプリケーションで参照できる名前付きセッションを作成できます。 セッションが作成されると、ConnectSessionメソッドまたは各OraClientオブジェクトのOraSessionsコレクションを介して、アプリケーションがそのセッションを参照できます。 OraSessionsコレクションには、現在のアプリケーションが作成したセッションのみが含まれます。 これは、セッションは、複数のアプリケーションでは共有できず、同一のアプリケーション内でのみ共有できることを意味します。

この例では、クライアント・オブジェクトのCreateSessionメソッドを使用して、セッション・オブジェクトを作成する方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraClient As OraClient
 Dim OraSession As OraSession
 Dim NamedOraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset As OraDynaset

 'Create the OraSession Object.
 Set OraSession = CreateObject("OracleInProcServer.XOraSession")

 'Get the OraClient object.
 Set OraClient = OraSession.Client

 'Create a named OraSession Object
 'Alternatively, you could use the CreateNamedSession
 'method of the OraSession Object.

 Set NamedOraSession = OraClient.CreateSession("ExampleSession")

 'Create the OraDatabase Object by opening a connection to Oracle.
 Set OraDatabase = NamedOraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)

 'Create the OraDynaset Object.
 Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)

End Sub


CreateSQLメソッド

適用対象

OraDatabaseオブジェクト

説明

SQL文を実行し、指定したSQL文とオプションからOraSQLStmtオブジェクトを作成します。

使用方法

Set orasqlstmt = oradatabase.CreateSQL(sql_statement, options)

引数

このメソッドの引数は、次のとおりです。

引数 説明
sql_statement 有効なOracle SQL文。
options OraSQLStmtのオプション状態を示すビット・フラグ。 それぞれの値を追加することで1つ以上のオプションを組み合せることができます。

定数

オプション・フラグの値は、次のとおりです。

定数 説明
ORASQL_NO_AUTOBIND &H1& データベース・パラメータの自動的なバインドを実行しない。
ORASQL_FAILEXEC &H2& エラーを発生させ、SQL文オブジェクトを作成しない。
ORASQL_NONBLK &H4& SQLを非ブロック状態で実行する。

これらの値は、oraconst.txtファイルにあります。

備考

SQL文は、ブレークのない連続する1行として指定できます。 行をブレークする必要がある場合は、改行(ASCII 10)を使用します。 キャリッジ・リターン(ASCII 13)は、基礎となるOracle Databaseファンクションがヌル終端文字として取り扱うため、使用しないでください。

PL/SQLのバインド変数は、OraParametersと組み合せて使用できます。

SQL文を実行すると、データベースに対するコミットがデフォルトで生成されます。 これを回避するには、CreateSQLメソッドの使用前に、セッション・オブジェクトにBeginTransメソッドを使用します。

PL/SQLブロックの実行時またはストアド・プロシージャのコール時は、PL/SQLの無名ブロックを実行する場合のように、コールの前後にBEGIN文とEND文を付ける必要があります。 これは、SQL*PlusおよびSQL*DBAのEXECUTEコマンドと同じです。

ORASQL_FAILEXECオプションを使用すると、SQLstmtオブジェクトの作成に失敗したとき(SQLstmtオブジェクトのリフレッシュ時)に、エラーが発生します。 SQLstmtオブジェクトは作成されず、リフレッシュもできません。


注意:

実行するSQL文またはPL/SQLブロックは、後で、オープンしているダイナセットでEditメソッドを使用したときにエラーを発生させる可能性があるため、CreateSQLの使用には注意が必要です。

データ型

String

この例では、パラメータ、CreateSQLメソッド、Refreshメソッド、およびOraSQLStmtオブジェクトのSQLプロパティの使用方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraSqlStmt As OraSQLStmt

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

 OraDatabase.Parameters.Add "EMPNO", 7369, 1
 OraDatabase.Parameters("EMPNO").ServerType = 2  'ORATYPE_NUMBER

 OraDatabase.Parameters.Add "ENAME", 0, 2
 OraDatabase.Parameters("ENAME").ServerType = 1  'ORATYPE_VARCHAR2

 Set OraSqlStmt = OraDatabase.CreateSQL("Begin Employee.GetEmpName" & _
          "(:EMPNO, :ENAME); end;", 0&)

 'Notice that the SQL statement is NOT modified.
 MsgBox OraSqlStmt.SQL

 'Should display SMITH
 MsgBox OraDatabase.Parameters("ENAME").Value

 'Change the value of the empno parameter.
 OraDatabase.Parameters("EMPNO").Value = 7499

 'Refresh the sqlstmt
 OraSqlStmt.Refresh

 'Should display ALLEN
 MsgBox OraDatabase.Parameters("ENAME").Value

 'Notice that the SQL statement is NOT modified.
 MsgBox OraSqlStmt.SQL

 'Remove the parameter.
 OraDatabase.Parameters.Remove ("job")

 End Sub


関連項目:



CreateTempBLOB/CLOBメソッド

適用対象

OraDatabaseオブジェクト

説明

データベースに一時LOBを作成します。

使用方法

Set OraBLOB = OraDatabase.CreateTempBLOB(use_caching) Set OraCLOB = OraDatabase.CreateTempCLOB(use_caching)

引数

このメソッドの引数は、次のとおりです。

引数 説明
use_caching このLOBにアクセスする際にOracle Databaseでキャッシュを使用するかどうかを指定するブール値。 デフォルト値はFALSEです。

備考

一時LOBは、データベースに永続的に存在しないLOBです。 OO4Oのプログラミングでは一般的に、一時LOBを、LOB引数を含むストアド・プロシージャおよびファンクションへ渡すために使用します。

一時LOBは、トランザクションには関係ありません。 (書込み操作の前に、ロックを取得する必要はありません。また、ロールバックは一時LOBには影響を与えません。)

use_caching引数は、一時LOBにアクセスする際にOracleでキャッシュを使用するよう指定します。これは、1つのLOBに複数のアクセスが予想される場合に推奨します。 LOBを作成してデータを格納し、ストアド・プロシージャに渡した後破棄する、といった通常の場合にはキャッシュは必要ありません。

一時LOBは、対応するOraBLOBまたはOraCLOBへの参照がクライアントに存在しなくなるまで、データベースに存在します。 これらの参照には、一時OraBLOBまたはOraCLOBオブジェクトを含む任意のOraParameterまたはOraParamArrayが含まれることに注意してください。

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

次の例では、CreateTempClobメソッドを使用してOraCLOBを作成する方法を示します。 作成されたOraCLOBは、データが移入され、CLOB型の引数を含むストアド・プロシージャに渡されます。

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraClob as OraClob

'Create the OraSession Object.
Set OraSession = CreateObject("OracleInProcServer.XOraSession")

'Create the OraDatabase Object by opening a connection to Oracle.

Set OraDatabase = OraSession.OpenDatabase("ExampleDb","scott/tiger", 0&)

'Create the stored procedure used in this example
OraDatabase.ExecuteSQL ("create or replace procedure GetClobSize" & _
           "(in_clob IN CLOB, clobsize OUT NUMBER) as Begin clobsize" & _
           " := DBMS_LOB.GETLENGTH(in_clob); End;")

'create an OraParameter object to represent Clob bind Variable
OraDatabase.Parameters.Add "CLOB", Null, ORAPARM_INPUT,  ORATYPE_CLOB

'the size will go into this bind variable
OraDatabase.Parameters.Add "CLOBSIZE", Null, ORAPARM_OUTPUT,  ORATYPE_NUMBER

' create a temporary CLOB
set OraClob = OraDatabase.CreateTempClob

'Populate the OraClob with some data. Note that no row locks are needed.
OraClob.Write "This is some test data"

'set the Parameter Value to the temporary Lob
OraDatabase.Parameters("CLOB").Value = OraClob

'execute the sql statement which updates Address in the person_tab
OraDatabase.ExecuteSQL ("Begin GetClobSize(:CLOB, :CLOBSIZE); end;")

'Display the size
MsgBox OraDatabase.Parameters("CLOBSize").Value

'these two lines force the temporary clob to be freed immediately
OraDatabase.Parameters.Remove "CLOB"
Set OraClob = nothing


Deleteメソッド

適用対象

OraDynasetオブジェクト

説明

指定したダイナセットの現在の行を削除します。

使用方法

oradynaset.Delete
oradynaset.DbDelete

備考

Deleteメソッドの使用前に、行を現在の行にしておく必要があります。行が現在の行になっていない場合は、エラーが発生します。

グローバル・トランザクション(つまり、BeginTransをすでに発行済)のダイナセットの所定の行でDeleteメソッドをコールすると、CommitTransまたはRollbackメソッドをコールするまで、選択した行がロックされたままになります。

削除した行を参照すると、エラーが発生します。 (MoveFirstMovePreviousMoveNextまたはMoveLastメソッドを使用して)データベース内で移動が発生するまで、削除した行とその直後と直前の行は、現在のまま残ります。 移動が発生すると、削除した行を再度現在の行にすることはできません。

トランザクションを使用した場合以外に、削除したレコードを復元する方法はありません。


注意:

EditAddNewまたはDeleteメソッドをコールすると、未処理のEditまたはAddNewのコールは処理前に取り消されます。 Updateメソッドを使用して保存されていない未処理の変更は、すべて取消処理中に失われます。

この例では、Deleteメソッドを使用してデータベースからレコードを削除する方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

'Declare variables
Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset 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 the OraDynaset Object. Only select the employees in Department 10.
Set OraDynaset = OraDatabase.CreateDynaset("select * from emp where" & _
          "deptno=10", 0&)

 Do Until OraDynaset.EOF
   OraDynaset.Delete
   OraDynaset.MoveNext
 Loop
 MsgBox "All employees from department 10 removed."

End Sub


Delete(OraCollection)メソッド

適用対象

OraCollectionオブジェクト

説明

索引を指定して要素を削除します。 このメソッドは、ORATYPE_TABLE型(ネストした表)のOraCollectionでのみ使用できます。

使用方法

OraCollection.Delete index

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] index 削除する要素の索引を指定する整数。

備考

Deleteメソッドは、クライアント側のネストした表に穴を作成します。指定した索引の要素がすでに削除されている場合、または指定した索引が所定の表に対して無効な場合、このメソッドはエラーを戻します。

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

Dim OraSession as OraSession
Dim OraDatabase as OraDatabase
Dim OraDynaset as OraDynaset
Dim CourseList 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 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

'Delete the CourseList  NestedTable at index 2.
'Before that lock should be obtained
OraDynaset.Edit
CourseList.Delete 2

OraDynaset.Update


Delete(OraRef)メソッド

適用対象

OraRefオブジェクト

説明

データベースの参照可能オブジェクトを削除します。

使用方法

OraRef.Delete

備考

削除したインスタンスの属性にアクセスすると、エラーになります。

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

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

'create an  OraParameter object represent Person object bind Variable
OraDatabase.Parameters.Add "PERSON", Null, ORAPARM_OUTPUT, ORATYPE_REF,"PERSON"

'execute the sql statement which selects person
'from the customers table for account = 10
OraDatabase.ExecuteSQL ("BEGIN select aperson into :PERSON from customers" & _
                   "where account = 10;  END;")

'get the Person object from OraParameter
set Person = OraDatabase.Parameters("PERSON").Value

'delete the Person object in the server for modifying its attributes
Person.Delete


DeleteIteratorメソッド

適用対象

OraCollectionオブジェクト

説明

コレクション・イテレータを削除します。

使用方法

OraCollection.DeleteIterator

備考

なし

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


Dequeue(OraAQ)メソッド

適用対象

OraAQオブジェクト

説明

メッセージをデキューします。

使用方法

Q.Dequeue()

備考

メッセージの属性は、このオブジェクトに含まれているOraAQMsgインタフェースを使用してアクセスできます。正常に実行された場合、このメソッドはメッセージ識別子をバイト配列で戻します。 それ以外の場合は、空の配列(NULL)を戻します。


注意:

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

完全なAQサンプルは、\OO4O\VB\SAMPLES \AQディレクトリにあります。


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

 'Dequeue the first message available
Q.Dequeue
Set Msg = Q.QMsg

'Display the message content
MsgBox Msg.Value

'Dequeue the first message available without removing it
' from the queue
Q.DequeueMode = ORAAQ_DQ_BROWSE

'Dequeue the first message with the correlation identifier
' equal to "RELATIVE_MSG_ID"
Q.Navigation = ORAAQ_DQ_FIRST_MSG
Q.correlate = "RELATIVE_MESSAGE_ID"
Q.Dequeue

'Dequeue the next message with the correlation identifier

' of "RELATIVE_MSG_ID"
Q.Navigation = ORAAQ_DQ_NEXT_MSG
Q.Dequeue

'Dequeue the first high priority message
Msg.Priority = ORAQMSG_HIGH_PRIORITY
Q.Dequeue

'Dequeue the message enqueued with message id of Msgid_1
Q.DequeueMsgid = Msgid_1
Q.Dequeue

'Dequeue the message meant for the consumer "ANDY"
Q.consumer = "ANDY"
Q.Dequeue

'Return immediately if there is no message on the queue
Q.wait = ORAAQ_DQ_NOWAIT
Q.Dequeue

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

Set OraObj = DB.CreateOraObject("MESSAGE_TYPE")
Set QMsg = Q.AQMsg(23, "MESSAGE_TYPE","SCOTT")

'Dequeue the first message available without removing it
Q.Dequeue
OraObj = QMsg.Value

'Display the subject and data
MsgBox OraObj("subject").Value & OraObj("Data").Value

Describeメソッド

適用対象

OraDatabaseオブジェクト

説明

スキーマ・オブジェクトを記述します。 このメソッドは、OraMetaDataインタフェースのインスタンスを戻します。

使用方法

OraMetaDataObj = OraDatabase.Describe(SchemaObjectName)

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] SchemaObjectName 記述するスキーマ・オブジェクトの名前を表す文字列。

備考

次のタイプのスキーマ・オブジェクトを記述できます。

その他のスキーマ・オブジェクト(列など)または無効なスキーマ・オブジェクト名を記述しようとすると、エラーになります。 ここにリストされていないスキーマ・オブジェクトは、直接記述せずにナビゲートしてください。

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

Describeの簡単な例

次のVisual Basicコードでは、Describeメソッドを使用して、emp表の各種属性を取り出し、表示する方法を示します。

Set emp = OraDatabase.Describe("emp")

'Display the name of the Tablespace
MsgBox emp!tablespace
'Display name and data type of each column in the emp table.
Set empColumns = emp!ColumnList
Set ColumnList = empColumns.Value

for i = 0 to ColumnList.Count - 1
  Set Column = ColumnList(i).Value
  MsgBox "Column: " & Column!Name & " Data Type: " & Column!Data Type
Next i

表の記述例

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

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
Dim OraMetaData As OraMetaData
Dim OraMDAttribute As OraMDAttribute
Dim ColumnList As OraMetaData
Dim Column As OraMetaData

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

'Use Describe to retrieve the metadata object
Set OraMetaData = OraDatabase.Describe("EMP")

'Display the type of the metadata
MsgBox TypeofMetaData & OraMetaData.Type

'Display the count of attributes belonging to the table
MsgBox NumberOfAttributes & OraMetaData.Count

'Attribute can be accessed using the explicit OraMetaData property: Attribute
'The index can be an integer or the attribute name
Set OraMDAttribute = OraMetaData.Attribute(0)
MsgBox "ObjectID: " & OraMDAttribute.Value

'Since Attribute is the default property of OraMetaData, an attribute can
' be accessed as follows. Here, we use attribute name as an index
Set OraMDAttribute = OraMetaData("ObjectID")
MsgBox "Name: " & OraMDAttribute.Name
MsgBox "Value: " & OraMDAttribute.Value

'Value is the default property of OraMDAttribute, the following shows
'the Value of property "IsClustered" for the table
MsgBox "Is Clustered: " & OraMetaData!IsClustered
MsgBox "Is Partitioned: " & OraMetaData!IsPartitioned

'Retrieve the Column List
Set OraMDAttribute = OraMetaData!ColumnList

' Use IsMDObject property to check whether an attribute's value is an OraMetaData
If (OraMDAttribute.IsMDObject()) Then
       Set ColumnList = OraMDAttribute.Value
      'Display the name and data type of each column
       For I = 0 To ColumnList.Count - 1
        Set Column = ColumnList(I).Value

' Each column is again an OraMetaData
    MsgBox "Column: " & Column!Name & " data type: " & Column!Data Type
  Next I
End If

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

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

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
Dim OraMetaData As OraMetaData
Dim OraMDAttribute As OraMDAttribute
Dim attrList As OraMetaData
Dim attr As OraMetaData

'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 OraMetaData = OraDatabase.Describe("ORAMD_ADDRESS")
NumAttributes = OraMetaData!NumAttributes
NumMethods = OraMetaData!NumMethods
MsgBox "The Address type has " & NumAttributes & " attributes"
MsgBox "Address Object has " & NumMethods & " methods"

'Retrieve the attribute list of this type object
Set attrList = OraMetaData!Attributes.Value

'Display the name and data type of each attribute
For I = 0 To attrList.Count - 1
  Set attr = attrList(I).Value
  ' each attr is actually an OraMetaData
  MsgBox "Attribute Name: " & attr!Name
  MsgBox "Attribute Type: " & attr!TypeName

Next I

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

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

Sub RecursiveDescribe(name$, xMD As OraMetaData)

Dim xMDAttr As OraMDAttribute
For I = 0 To xMD.Count - 1
    Set xMDAttr = xMD.Attribute(I)

    ' If an attribute can be described further, describe it,
    ' otherwise display its attribute name & value
    If (xMDAttr.IsMDObject) Then
        RecursiveDescribe xMDAttr.name, xMDAttr.Value
    Else
        MsgBox name & "->" & xMDAttr.name & " = " & xMDAttr.Value
  End If
Next I

End Sub
Sub Main()

'This example displays all the attributes of any schema object given
Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
Dim xMD As OraMetaData
Dim x 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&)

' x is any database object, here the EMP table is used as an example
x = "EMP"
Set xMD = OraDatabase.Describe(x)
MsgBox x & " is of the type " & xMD.Type
RecursiveDescribe x, xMD

End Sub

DestroyDatabasePoolメソッド

適用対象

OraSessionオブジェクト

説明

プールの親セッション・オブジェクトが破棄されると、そのプールも暗黙的に破棄されます。 プールは、DestroyDatabasePoolメソッドをコールすることによって、いつでも明示的に破棄できます。

使用方法

DestroyDatabasePool()

備考

プールが存在しない場合にこのメソッドをコールすると、例外が発生します。


DisableBuffering(OraLOB)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

説明

LOB操作のバッファリングを使用禁止にします。

使用方法

OraBlob.DisableBuffering
OraClob.DisableBuffering

備考

このメソッドは、バッファを自動的にフラッシュしません。 バッファリングを使用禁止にする前に、FlushBufferメソッドを使用して変更内容をフラッシュしてください。


Div(OraIntervalDS)メソッド

適用対象

OraIntervalDSオブジェクト

説明

OraIntervalDSオブジェクトを除数で除算します。

使用方法

OraIntervalDSObj.Div divisor

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] divisor 除数として使用するVariant型の数値またはOraNumberオブジェクト。

備考

この操作の結果は、OraIntervalDSオブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。


Div(OraIntervalYM)メソッド

適用対象

OraIntervalYMオブジェクト

説明

OraIntervalYMオブジェクトを除数で除算します。

使用方法

OraIntervalYMObj.Div divisor

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] divisor 除数として使用するVariant型の数値またはOraNumberオブジェクト。

備考

この操作の結果は、OraIntervalYMオブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。


Div(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトを数値の引数で除算します。

使用方法

OraNumber.Div operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand Variant型の文字列、OraNumberオブジェクトまたは数値。

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。

operandに0(ゼロ)は指定できません。0(ゼロ)で除算するとエラーになります。


DynasetCacheParamsメソッド

適用対象

OraParameterオブジェクト

説明

PL/SQLカーソルから作成されるダイナセットのキャッシュ・パラメータとフェッチ・パラメータを指定します。

使用方法

oraparameter.DynasetCacheParams SliceSize,perblock, Blocks, FetchLimit,FetchSize

引数

このメソッドの引数は、次のとおりです。

引数 説明
SliceSize キャッシュ・スライス・サイズ。
perblock ブロック当たりのキャッシュ・スライス。
Blocks キャッシュのブロックの最大数。
FetchLimit フェッチ配列のサイズ。
FetchSize フェッチ配列のバッファ・サイズ。

備考

このメソッドは、カーソル変数を含むPL/SQLプロシージャの実行前にコールする必要があります。 デフォルトでは、レジストリに指定されているキャッシュ・パラメータとフェッチ・パラメータのデフォルト値を使用して、ダイナセットが作成されます。


Editメソッド

適用対象

OraDynasetオブジェクト

説明

コピー・バッファにデータをコピーすることによって、現在の行の編集操作を開始します。

使用方法

oradynaset.Edit
oradynaset.DbEdit

備考

Editメソッドでは、ローカルにキャッシュされたデータがOracle Databaseの対応する行と比較されます。 Oracle Databaseのデータが、参照中のデータと同じでない場合は、エラーが生成されます。 この操作が成功すると、Updateメソッドによる編集が完了するまで、または進行中の編集を破棄するようなデータベース内での移動が発生するまでの間、行は"SELECT ... FOR UPDATE"文を使用してロックされます。 "SELECT ... FOR UPDATE"文の動作は、OpenDatabaseメソッドがコールされたときに使用されたオプション・フラグのLock Waitモードの影響を受けます。


注意:

キャッシュされたデータは、BLOBCLOBObjectREFおよびコレクション型についてはデータベースと比較されず、無関係に更新されます(内容を保障しない書込み)。

編集中は、フィールドへの変更はシャドウであるコピー・バッファに保持され、データベースの実際の内容には反映されません。 ただし、編集操作を行っている間、行への参照には、新しく変更されたデータが戻されます。

このダイナセットに付加されているデータ・コントロール内でデータを変更した場合は、次のレコード移動時にEditメソッドが自動的にコールされます。 そのため、このメソッドが必要になるのは、コード内のフィールド・データを変更するときのみです。


注意:

EditAddNewまたはDeleteメソッドをコールすると、未処理のEditまたはAddNewのコールは処理前に取り消されます。 Update操作を使用して保存されていない未処理の変更は、すべて取消処理中に失われます。

この例では、EditおよびUpdateメソッドを使用して、データベース内の値を更新する方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

'Declare variables
Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset 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 the OraDynaset Object.
Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)

 'Traverse until EOF is reached, settingeach employee's salary to zero
 Do Until OraDynaset.EOF
   OraDynaset.Edit
   OraDynaset.Fields("sal").value = 0
   OraDynaset.Update
   OraDynaset.MoveNext
 Loop
 MsgBox "All salaries set to ZERO."

End Sub


Edit(OraRef)メソッド

適用対象

OraRefオブジェクト

説明

データベースの参照可能オブジェクトをロックします。

使用方法

OraRef.Edit

備考

OraRefの基礎となる参照可能オブジェクトの属性を変更する前に、このメソッドをコールする必要があります。コールせずに変更しようとするとエラーが発生します。 このメソッドのコールでは、データベースのオブジェクトをロックするために、ネットワーク・ラウンドトリップが発生します。 データベースで別のユーザーがオブジェクトを変更すると、エラーになります。 オブジェクトは、EditOptionメソッドを使用するとPINオペレーション中にもロックできます。

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

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

ダイナセットの例

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

'locks the Person object in the server for modifying its attributes
Person.Edit
  Person.Name = "Eric"
  Person.Age = 35
'Update method flushes the modified referenceable object in the server
Person.Update

パラメータの例

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

'create an  OraParameter object represent Address object bind Variable
OraDatabase.Parameters.Add "PERSON", Null, ORAPARM_OUTPUT, _
                 ORATYPE_REF,"PERSON"

'execute the sql statement which selects person from the customers table
OraDatabase.ExecuteSQL ("BEGIN select aperson into :PERSON" & _
                 "from customers where account = 10;  END;")

'get the Person object from OraParameter
set Person = OraDatabase.Parameters("PERSON").Value

'locks the Person object in the server for modifying its attributes
Person.Edit
  Person.Name = "Eric"
  Person.Age = 35

'Update method flushes the modified referenceable object in the server
Person.Update


ElementValueメソッド

適用対象

OraCollectionオブジェクト

説明

イテレータが指しているコレクション要素の現在の値を戻します。

使用方法

elem_val = OraCollection.ElementValue

引数

このメソッドの引数は、次のとおりです。

引数 説明
elem_val コレクションの要素値を表すVariant

ElementType

Object型およびREF型の要素の場合は、要素の値が、その型に相当するOO4Oオブジェクトとして戻されます。 次の表に、要素の型とその要素の戻り値を示します。

要素の型 要素の値
Object OraObject
REF OraRef
Date String
Number String
CHARVARCHAR2 String
Real Real
Integer Integer

備考

EOCまたはBOCプロパティがTRUEを戻しているときにこのメソッドをコールするとエラーが発生します。 要素のVariant型は、コレクションの要素の型によって決まります。

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


EnableBuffering(OraLOB)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

説明

LOB操作のバッファリングを使用可能にします。

使用方法

OraBlob.EnableBuffering
OraClob.EnableBuffering

備考

バッファリングを使用可能にすると、FlushBufferメソッドがコールされるまでLOBバッファリング・サブシステムで変更内容をバッファリングし、ネットワーク・ラウンドトリップ回数を最小に抑えます。 LOBの特定の領域に少量の読取りと書込みを繰り返し実行するようなアプリケーションの場合に効果があります。

LOBバッファリングの使用には、多くの注意事項と制限があります。 ここでは要約を示しますが、詳細は『Oracle Databaseアプリケーション開発者ガイド-ラージ・オブジェクト』を参照してください。

制限事項


関連項目:

『Oracle Databaseアプリケーション開発者ガイド-ラージ・オブジェクト』


Enqueue(OraAQ)メソッド

適用対象

OraAQオブジェクト

説明

このオブジェクトに含まれるメッセージ(OraAQMsg)をエンキューします。

使用方法

Msgid = Q.Enqueue

備考

正常に実行された場合、このメソッドはメッセージ識別子をバイト配列で戻します。 それ以外の場合は、空の配列(NULL)を戻します。


注意:

次のサンプル・コードは、メッセージ・デキューの標準的な例ですが、そのままでは実行できません。

完全なAQサンプルは、\OO4O\VB\SAMPLES\AQディレクトリにあります。


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

'Create an OraAQ object for the queue "DBQ"
Dim Q as OraAQ
Dim Msg as OraAQMsg
Dim OraSession as OraSession
Dim DB as OraDatabase

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set DB = OraSession.OpenDatabase("mydb", "scott/tiger" 0&)
Set Q = DB.CreateAQ("DBQ")

'Get a reference to the AQMsg object
Set Msg = Q.AQMsg
Msg.Value = "Enqueue the first message to a RAW queue."

'Enqueue the message
Q.Enqueue

'Enqueue another message.
Msg.Value = "Another message"
Q.Enqueue

'Enqueue a message with non-default properties.
Msg.Priority = ORAQMSG_HIGH_PRIORITY
Msg.Delay = 5
Msg.Value = "Urgent message"
Q.Enqueue
Msg.Value = "The visibility option used in the enqueue call" & _
           "is ORAAQ_ENQ_IMMEDIATE"
Q.Visible = ORAAQ_ENQ_IMMEDIATE
Msgid = Q.Enqueue

'Enqueue Ahead of message Msgid_1
Msg.Value = "First Message to test Relative Message id"
Msg.Correlation = "RELATIVE_MESSAGE_ID"

Msg.delay = ORAAQ_MSG_NO_DELAY
Msgid_1 = Q.Enqueue
Msg.Value = "Second message to test RELATIVE_MESSAGE_ID is queued" & _
            " ahead of the First Message "
Q.RelMsgId = Msgid_1
Msgid = Q.Enqueue

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

'Prepare the message. MESSAGE_TYPE is a user defined type in the "AQ" schema
Set OraMsg = Q.AQMsg(23, "MESSAGE_TYPE","SCOTT")
Set OraObj = DB.CreateOraObject("MESSAGE_TYPE")

OraObj("subject").Value = "Greetings from OO4O"
OraObj("text").Value = "Text of a message originated from OO4O"

Msgid = Q.Enqueue


Erase(OraLOB)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

説明

指定したオフセットから始まるこのオブジェクトのLOB値の指定部分を消去します。

使用方法

OraBlob.Erase amount, offset
OraClob.Erase amount, offset

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] amount 消去する最大文字数またはバイト数を指定する整数。
[in] offset [オプション] LOB値の消去を開始する絶対オフセットを指定するための整数。 デフォルト値は1です。

備考

このメソッドのコール前に、行レベルまたはオブジェクト・レベルでロックを取得する必要があります。 要求した文字数またはバイト数を消去する前にLOB値の最後に達した場合は、実際の文字数またはバイト数と要求した文字数またはバイト数の間に相違が発生します。 BLOB型の場合の消去は、既存のLOB値を0(ゼロ)バイト充填文字で上書きします。 CLOB型の場合の消去は、既存のLOB値を空白で上書きします。


ExecuteSQLメソッド

適用対象

OraDatabaseオブジェクト

説明

SELECT以外のSQL文またはPL/SQLブロックを1つ実行します。

使用方法

rowcount = oradatabase.ExecuteSQL(sql_statement)
rowcount = oradatabase.DbExecuteSQL(sql_statement)

引数

このメソッドの引数は、次のとおりです。

引数 説明
sql_statement SELECT以外の有効なOracle SQL文。

備考

SQL文を実行し、その文で処理された行数を戻します。

sql_statement引数は、ブレークのない連続する1行として指定できます。 行をブレークする必要がある場合は、改行(ASCII 10)を使用します。 キャリッジ・リターン(ASCII 13)は、基礎となるOracle Databaseファンクションがヌル終端文字として取り扱うため、使用しないでください。

SQL文を実行すると、データベースに対するコミットがデフォルトで生成されます。 これを回避するには、ExecuteSQLメソッドの使用前に、セッション・オブジェクトにBeginTransメソッドを使用します。

PL/SQLのバインド変数は、OraParametersと組み合せて使用できます。

PL/SQLブロックの実行時またはストアド・プロシージャのコール時は、PL/SQLの無名ブロックを実行する場合のように、コールの前後にBEGIN文とEND文を付ける必要があります。 これは、SQL*PlusおよびSQL*DBAのEXECUTEコマンドと同じです。


注意:

実行するSQL文またはPL/SQLブロックが、現在オープンしているダイナセットに悪影響を与える可能性があるため、ExecuteSQLメソッドの使用には注意が必要です。 ExecuteSQLメソッドに使用するOraDatabaseオブジェクトが、ダイナセットを作成するために使用されたオブジェクトと同一の場合は、特に注意してください。 不確実な場合は、異なるOraDatabaseオブジェクトを使用してください。

トランザクション・モードでデータベースのコミットが発行された場合は、通常のダイナセット操作が悪影響を受ける可能性があります。 これは、SQLのコミット文、データ制御言語(DCL)またはデータ定義言語(DDL)コマンドが発行された場合に発生する可能性があります。 CREATEDROPALTERGRANTおよびREVOKEなど、DCLとDDLのSQLコマンドは、常にコミットを強制し、コマンド以前に実行された内容をすべてコミットします。 DCL、DDLおよびトランザクションの詳細は『Oracle Database SQLリファレンス』を参照してください。

データ型

Long Integer

例: ExecuteSQL

この例では、AddおよびRemoveパラメータ・メソッド、ServerTypeパラメータ・プロパティ、およびストアド・プロシージャGetEmpNameとストアド・ファンクションGetSalをコールするExecuteSQLデータベース・メソッドを使用します。 例を実行する前に、ORAEXAMP.SQLファイルを実行して、GetEmpNameGetSal、およびその他の必要なオブジェクト型とLOBをOracle Databaseに作成してください。 次に、このOO4Oコード例をコピーして、フォームの定義セクションに貼り付け、プログラムを実行します。

Sub Form_Load ()

'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset As OraDatabase

 'Create the OraSession Object.
 Set OraSession = CreateObject("OracleInProcServer.XOraSession")

 'Create the OraDatabase Object.
 Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)

 'Add EMPNO as an Input/Output parameter and set its initial value.
 OraDatabase.Parameters.Add "EMPNO", 7369, ORAPARM_INPUT
 OraDatabase.Parameters("EMPNO").ServerType = ORATYPE_NUMBER

 'Add ENAME as an Output parameter and set its initial value.
 OraDatabase.Parameters.Add "ENAME", 0, ORAPARM_OUTPUT
 OraDatabase.Parameters("ENAME").ServerType = ORATYPE_VARCHAR2

 'Add SAL as an Output parameter and set its initial value.
 OraDatabase.Parameters.Add "SAL", 0, ORAPARM_OUTPUT
 OraDatabase.Parameters("SAL").ServerType = ORATYPE_NUMBER

 'Execute the Stored Procedure Employee.GetEmpName to retrieve ENAME.
 ' This Stored Procedure can be found in the file ORAEXAMP.SQL.
 OraDatabase.ExecuteSQL ("Begin Employee.GetEmpName (:EMPNO, :ENAME); end;")
 'Display the employee number and name.

 'Execute the Stored Function Employee.GetSal to retrieve SAL.
 ' This Stored Function can be found in the file ORAEXAMP.SQL.
 OraDatabase.ExecuteSQL ("declare SAL number(7,2); Begin" & _
                   ":SAL:=Employee.GetEmpSal (:EMPNO); end;")

 'Display the employee name, number and salary.
 MsgBox "Employee " & OraDatabase.Parameters("ENAME").value & ", #" & _
           OraDatabase.Parameters("EMPNO").value & ",Salary=" & _
           OraDatabase.Parameters("SAL").value

 'Remove the Parameters.
 OraDatabase.Parameters.Remove "EMPNO"
 OraDatabase.Parameters.Remove "ENAME"

 OraDatabase.Parameters.Remove "SAL"
End Sub


関連項目:



Exist(OraCollection)メソッド

適用対象

OraCollectionオブジェクト

説明

指定した索引に要素が存在する場合はTRUE、それ以外の場合はFALSEを戻します。 ORATYPE_TABLE型のOraCollectionの場合のみ有効です。

使用方法

exists = OraCollection.Exist index

引数

このメソッドの引数は、次のとおりです。

引数 説明
[out] exists 要素の存在状態を示すブール値。
[in] index 要素の索引を指定する整数。

備考

なし


Exp(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

eを底とするOraNumberオブジェクトのべき乗を計算します。

使用方法

OraNumber.Exp

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


FetchOraRefメソッド

適用対象

OraDatabaseオブジェクト

説明

キャッシュに参照可能オブジェクトをフェッチし、関連付けられているOraRefオブジェクトを戻します。

使用方法

Set OraRef = OraDatabase.FetchOraRef(hex_value)

引数

このメソッドの引数は、次のとおりです。

引数 説明
hex_value 16進のREF値を含んだ文字列。

備考

hex_value引数は、OraRef.HexValueプロパティを介して、またはOraDynaset.GetXMLメソッドで生成されたXMLドキュメントから取得できます。


FieldSizeメソッド

適用対象

OraFieldオブジェクト

説明

LONGまたはLONG RAW型のフィールドに格納されたバイト数を戻します。設計時には使用できません。実行時は読取り専用です。

使用方法

data_size = orafield.FieldSize( )
data_size = orafield.DbFieldSize( )

備考

LONGまたはLONG RAW型のフィールドに格納されたバイト数(約64KBの値まで)を戻します。 64KBを超える値がフィールドに含まれている場合、FieldSize-1を戻します。

Oracle Databaseは64KBを超える列の長さは戻しません。このため、列の長さを判断する唯一の方法は列の取出しです。 リソース節約のため、64KBを超える長い列が自動的に取り出されることはありません。

データ型

Long Integer


FindFirst、FindLast、FindNextおよびFindPreviousメソッド

適用対象

OraDynasetオブジェクト

説明

FindClauseに一致する指定行をダイナセットで検索します。 FindClauseは、有効なWHERE句で、WHEREのないものを指定できます。 現在のFindClauseが、前回の検索操作の最後の条件句と一致している場合、現在のFindClauseは再解析されません。

これらのメソッドは、一致する行に到達している場合を除いて、アドバイス・オブジェクトをコールすることなく、一致する行に現在の行を直接移動します。 一致する行が見つからない場合、NoMatchプロパティはTRUEに設定され、現在の行はそのままになります。

使用方法

oradynaset.FindFirst FindClause
oradynaset.FindLast FindClause
oradynaset.FindNext FindClause
oradynaset.FindPrevious FindClause

備考

FindClauseには、次の種類の式が使用できます。

SQL LIKE演算子は、マルチバイト言語では機能しません。 ユーザーのスキーマには、DUAL表またはシノニムが必要です。 日付の値は、Visual Basic形式で検索および比較されます。これは、コントロール・パネルで指定される形式です。 そのため、デフォルトのOracle形式であるDD-MON-YYYYなど、その他の形式を使用すると、日付の比較は失敗します。

SQLファンクションTO_CHAR(date, fmt)は、使用できません。1つ目の引数はネイティブのOracle形式の日付値であることが必要ですが、OO4Oでは文字列の日付のみが処理されるためです。

SQLファンクションTO_DATEでは、文字列が日付に変換されますが、前述のとおり、OO4OによってVisual Basic形式の文字列に再変換されるため、比較はやはり失敗します。

NO_CACHEダイナセットのFindPreviousおよびFindLastメソッドは機能しません。NoMatchTRUEに設定されます。

注意: エラーを回避するには、Findメソッドのコール前にEOFまたはBOFをチェックします。

この例では、FindFirstFindNextFindPreviousメソッドの使用方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

  Dim OraSession As OraSession
  Dim OraDatabase As OraDatabase
  Dim OraDynaset As OraDynaset
  Dim OraFields As OraFields
  Dim FindClause As String

  Set OraSession = CreateObject("OracleInProcServer.XOraSession")
  Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "SCOTT/TIGER", 0&)
  Set OraDynaset = OraDatabase.CreateDynaset("select * from emp where empno" & _
                 ">= 7654 and empno <= 7844 ", ORADYN_NO_BLANKSTRIP)

  Set OraFields = OraDynaset.Fields

  OraDynaset.MoveFirst

  'FindClause for job as MANAGER
  FindClause = "job LIKE '%GER'"

  OraDynaset.FindFirst FindClause

  'NoMatch property set to true , if no rows found
  If OraDynaset.NoMatch Then
    MsgBox "Couldn't find rows "
  else
    MsgBox OraFields("ename").Value  ' Should display BLAKE

    OraDynaset.FindNext FindClause
    MsgBox OraFields("ename").Value  ' Should display CLARK

    OraDynaset.FindPrevious FindClause
    MsgBox OraFields("ename").Value  ' Should display BLAKE

   endif

End Sub


Floor(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトの下限値を計算します。

使用方法

OraNumber.Floor

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


FlushBuffer(OraLOB)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

説明

LOBのバッファリングが使用可能な場合に、LOBのデータをデータベースにフラッシュします(移します)。

使用方法

OraBlob.FlushBuffer OraClob.FlushBuffer


GetDatabaseFromPoolメソッド

適用対象

OraSessionオブジェクト

説明

プールから、次に使用可能なOraDatabaseオブジェクトを戻します。

使用方法

GetDatabaseFromPool(long waitTime)

引数

このメソッドの引数は、次のとおりです。

引数 説明
waitTime プールに最大数のオブジェクト数があり、すべてが使用中の場合に、このコールが次に使用可能なオブジェクトを待機している時間(ミリ秒単位)。

備考

プールからOraDatabaseオブジェクトを取り出すには、GetDatabaseFromPoolメソッドをコールします。 このファンクションはOraDatabaseオブジェクトへの参照を戻します。 プールに最大許容オブジェクト数に満たないオブジェクトが保有され、それらのオブジェクトがすべて使用中の場合は、暗黙的に追加のOraDatabaseオブジェクトが作成されます。 また、プール内のアイテムにタイムアウトしたOraDatabaseオブジェクトが含まれている場合も、新しいオブジェクトが作成されて戻されます。 プールから取得したOraDatabaseオブジェクトは、使用中のマークが付けられ、そのオブジェクトがアプリケーションから参照されなくなるとプールに戻されます。

このコールでは、次の場合に例外を発生します。

OraSessionLastServerErrプロパティには、例外の特定原因を示すコードが含まれます。


GetChunkメソッド

適用対象

OraFieldオブジェクト

説明

LONGまたはLONG RAW型フィールドの全体または一部分のバイトを含む文字列を戻します。

使用方法

data_string = orafield.GetChunk(offset, numbytes)
data_string = orafield.DbGetChunk(offset, numbytes)

引数

このメソッドの引数は、次のとおりです。

引数 説明
offset データのコピー前にスキップするフィールド内のバイト数。
numbytes コピーするバイト数。

備考

GetChunkメソッドは通常、ローカル・キャッシュから指定されたバイト数を取り出します。 キャッシュ内にデータが見つからない場合は、GetChunkメソッドがデータベースからデータを要求します。 ダイナセット内のすべてのフィールド(LONGまたはLONG RAW型のフィールドを除く)のデータが取り出されて、一貫性検査のためにキャッシュされている値と比較されます。 最後のフェッチ後に変更があった場合、GetChunkメソッドは操作を中止します。この結果、エラーが発生し、NULL文字列が戻されます。

LONGまたはLONG RAW型のフィールドが65280バイト未満の場合は、GetChunkメソッドを使用せずにValueプロパティを使用すると、データを速く取り出すことができます。 GetChunkメソッドは、別名を付けたLONGまたはLONG RAW型のフィールドには使用できません。

「LONG RAWからLOBまたはBFILEへの移行」を参照してください。

この例では、GetChunkメソッドを使用してデータベース内のLONG RAW型の列を取り出し、ファイルとして保存する方法を示します。 この例では、longrawという列を含んだ表を示すOraDynasetという有効なダイナセットが存在していると想定しています。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 このプロシージャは、有効なファイル名を使用してコールしてください。

Sub GetChunkExample (FName As String)

'Declare various variables
Dim CurSize As Integer, ChunkSize  As Long
Dim I As Integer, FNum As Integer, CurChunk As String

'Set the size of each chunk
ChunkSize = 10240

frmChunk.MousePointer = HOURGLASS

'Get a free file number
FNum = FreeFile

'Open the file
Open FName For Binary As #FNum

 I = 0
'Loop through all of the chunks. Oracle does not return the size of columns >
' 64KB. We should loop until the length of our block is less than we asked for.
Do
 CurChunk = OraDynaset.Fields("LONGRAW").GetChunk(I * ChunkSize, ChunkSize)
 CurSize = Len(CurChunk) 'Get the length of the current chunk.

 Put #FNum, , CurChunk   'Write chunk to file.
 I = I + 1
Loop Until CurSize < ChunkSize

'Close the file.
Close FNum

frmChunk.MousePointer = DEFAULT

End Sub


GetChunkByteメソッド

適用対象

OraFieldオブジェクト

説明

LONGまたはLONG RAW型のフィールドからデータを読み込み、バイト配列に格納し、読み込んだデータのサイズを戻します。

使用方法

Size_read = orafield.GetChunkByte(ByteArray, offset, numbytes)

引数

このメソッドの引数は、次のとおりです。

引数 説明
ByteArray データを格納するバイト配列の最初の要素。
offset データのコピー前にスキップするフィールド内のバイト数。
numbytes コピーするバイト数。

備考

可能な場合、GetChunkByteメソッドは、ローカル・キャッシュから指定されたバイト数を取り出します。 ただし、一部のデータは、リソース節約のために、ローカルに格納されない場合があります。 この場合、GetChunkByteメソッドは、必要に応じてデータベースから必要なデータを要求します。 この処理の一部として、ダイナセット内のすべてのフィールド(LONGまたはLONG RAW型のフィールドを除く)のデータが取り出されて、一貫性検査のためにキャッシュされている値と比較されます。 元の部分データのフェッチ後に変更があった場合、GetChunkByteメソッドは操作を中止します。この結果エラーが発生します。 操作を中止した場合、戻される文字列はNULLです。

LONGまたはLONG RAW型のフィールドが65280バイト未満の場合は、GetChunkByteメソッドを使用せずにValueプロパティを使用すると、データを速く取り出すことができます。 GetChunkByteメソッドは、別名を付けたLONGまたはLONG RAW型のフィールドには使用できません。

この例では、GetChunkByteメソッドを使用してデータベース内のLONG RAW型の列を取り出し、ファイルとして保存する方法を示します。 この例では、longrawという列を含んだ表を示すOraDynasetという有効なダイナセットが存在していると想定しています。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 このプロシージャは、有効なファイル名を使用してコールしてください。

Sub GetChunkByteExample (FName As String)

'Declare various variables
Dim CurSize As Integer, ChunkSize  As Long
Dim I As Integer, FNum As Integer, CurChunk() As Byte

'Set the size of each chunk
ChunkSize = 10240
'Redim CurChunk Array
ReDim CurChunk(ChunkSize)

frmChunk.MousePointer = HOURGLASS

'Get a free file number
FNum = FreeFile

'Open the file
Open FName For Binary As #FNum

 I = 0
'Loop through all of the chunks
'Oracle does not return the size of columns > 64KB. We should loop until the 'length of our block is less than we asked for.

Do
 CurSize = OraDynaset.Fields("type_longraw").GetChunkByte(CurChunk(0), I * ChunkSize, ChunkSize)

If CurSize > 0 AND CurSize < ChunkSize Then
    ReDim CurChunk(CurSize)
    CurSize = OraDynaset.Fields("type_longraw").GetChunkByte(CurChunk(0), I * ChunkSize, CurSize)
 End If
 Put #FNum, , CurChunk   'Write chunk to file.
 I = I + 1
Loop Until CurSize <= 0

'Close the file.
Close FNum

frmChunk.MousePointer = DEFAULT

End Sub


関連項目:

詳細は、「LONG RAWからLOBまたはBFILEへの移行」を参照してください。


GetChunkByteExメソッド

適用対象

OraFieldオブジェクト

説明

LONGまたはLONG RAW型のフィールドからデータを読み込み、Variantに格納し、読み込んだデータのサイズを戻します。

使用方法

amount_read = orafield.GetChunkByteEx(ByteArray, offset, numbytes)

引数

このメソッドの引数は、次のとおりです。

引数 説明
ByteArray データを格納するVariant型のバイト配列の名前。
offset データのコピー前にスキップするフィールド内のバイト数。
numbytes コピーするバイト数。

備考

可能な場合、GetChunkByteExメソッドは、ローカル・キャッシュから指定されたバイト数を取り出します。 ただし、一部のデータは、リソース節約のために、ローカルに格納されない場合があります。 この場合、GetChunkByteExメソッドは、必要に応じてデータベースから必要なデータを要求します。 この処理の一部として、ダイナセット内のすべてのフィールド(LONGまたはLONG RAW型のフィールドを除く)が取り出されて、一貫性検査のためにキャッシュされている値と比較されます。 元の部分データのフェッチ後に変更があった場合、GetChunkByteExは操作を中止し、エラーを戻します。

GetChunkByteExメソッドの最初のパラメータは、バイト配列の最初の要素を指定するGetChunkByteメソッドとは異なり、Variantであるため、ASP/IIS環境ではGetChunkByteExメソッドのみ使用可能です。

LONGまたはLONG RAW型のフィールドが65280バイト未満の場合は、GetChunkByteExメソッドを使用せずにValueプロパティを使用すると、データを速く取り出すことができます。

「LONG RAWからLOBまたはBFILEへの移行」を参照してください。

GetChunkByteExメソッドを使用してLONG RAW型の列を取り出す例

この例では、GetChunkByteExメソッドを使用してデータベース内のLONG RAW型の列を取り出し、ファイルとして保存する方法を示します。 この例では、type_longrawという列を含んだ表を示すOraDynasetという有効なダイナセットが存在していると想定しています。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 このプロシージャは、有効なファイル名を使用してコールしてください。

Sub GetChunkByteExExample (FName As String)
'Declare various variables
Dim bytesread As Integer, ChunkSize As Long ,

bytearr() as byte
Dim I As Integer, FNum As Integer, CurChunk
'Set the size of each chunk
ChunkSize = 10240

frmChunk.MousePointer = HOURGLASS
'Get a free file number
FNum = FreeFile
'Open the file
Open FName For Binary As #FNum
I = 0
'Loop through all of the chunks
'Oracle does not return the size of columns > 64KB.
'We should loop until the length of our block is
'less than we asked for.
Do
  bytesread = OraDynaset.Fields("type_longraw").GetChunkByteEx(CurChunk,_
              I * ChunkSize, ChunkSize)
'redim byte array
redim bytearr(bytesread - 1)
bytearr = CurChunk
Put #FNum, , bytearr 'Write chunk to file.
I = I + 1
Loop Until bytesread < ChunkSize
'Close the file.
Close FNum
frmChunk.MousePointer = DEFAULT
End Sub

Active Server Pages(ASP)でGetChunkByteExメソッドを使用する例

'This example is for use with ASP (Active Server Pages)
<%@ LANGUAGE = VBScript %>
<%Response.ContentType = "image/JPEG"%>
<%
Dim OraDatabase, Oradynaset
Dim Chunksize, BytesRead, CurChunkEx
'This assumes a pool of database connections have been created in the global.asa
Set OraDatabase = OraSession.getDatabaseFromPool(10)
'This assumes a table called "art_gallery" and
'displays JPEG images stored in the table
Set OraDynaset = OraDatabase.CreateDynaset("select art from art_gallery " & _
              "where artist = 'Picasso'", 0)

BytesRead = 0
'Reading in 32K chunks
ChunkSize= 32768
Do
  BytesRead = OraDynaset.Fields("picture").GetChunkByteEx(CurChunkEx, _
                                 i * ChunkSize, ChunkSize)
  if BytesRead > 0 then
     Response.BinaryWrite CurChunkEx
   end if
Loop Until BytesRead < ChunkSize
'Cleanup, remove all local references
Set OraDynaset = Nothing
Set Oradatabase = Nothing
%>


GetXMLメソッド

適用対象

OraDynasetオブジェクト

説明

ダイナセットの内容に基づいてXMLドキュメントを生成します。

使用方法

 XMLstring = oradynaset.GetXML(startrow, maxrows)

引数

このメソッドの引数は、次のとおりです。

引数 説明
startrow 開始する行を示す行識別子(OraDynaset.RowPositionを参照)。 この引数のデフォルト値は0(第1行)です。
maxrows 取得する行の最大数(レコード・セットの最後に達した場合、戻される行はこれより少なくなります)。 この引数を省略した場合は、すべての行が戻されます。

備考

このメソッドは、XMLドキュメントを含む文字列を返します。

出力XMLの書式は、OraDynasetおよびOraFieldオブジェクトのXMLプロパティを使用してカスタマイズできます。


GetXMLToFileメソッド

適用対象

OraDynasetオブジェクト

説明

XMLドキュメントを生成し、それをファイルに書き込みます。

使用方法

oradynaset.GetXMLToFile (filename, startrow, maxrows)

引数

このメソッドの引数は、次のとおりです。

引数 説明
filename XMLが書き込まれるファイルの名前。 同じ名前の既存ファイルは上書きされます。
startrow 開始する行を示す行識別子(OraDynaset.RowPositionを参照)。 この引数のデフォルト値は0(第1行)です。
maxrows 取得する行の最大数(レコード・セットの最後に達した場合、戻される行はこれより少なくなります)。 この引数を省略した場合は、すべての行が戻されます。

備考

戻り値はありません。

XML出力の書式は、OraDynasetおよびOraFieldオブジェクトのXMLプロパティを使用してカスタマイズできます。


GetRowsメソッド

適用対象

OraDynasetオブジェクト

説明

ダイナセット・オブジェクトの複数のレコードをVariant型のSAFEARRAYに取り出します。

使用方法

Array =OraDynaset.GetRows(num_rows, start, fields )

引数

このメソッドの引数は、次のとおりです。

引数 説明
num_rows [オプション] 取り出すレコードの数を表す整数。 デフォルト値はダイナセット内の行全体の数です。
start [オプション] GetRows操作を開始するダイナセットの開始位置を表す整数。 デフォルト値はダイナセットの現在の位置です。
fields [オプション] 単一のフィールド名、フィールド位置、フィールド名の配列またはフィールド位置番号の配列を表すVariantGetRowsメソッドはこれらのフィールド内のデータのみを戻します。

備考

ダイナセットから2次元の配列にレコードをコピーするには、GetRowsメソッドを使用します。 最初の添字はフィールドを識別し、2番目の添字は行番号を識別します。 GetRowsメソッドがデータを戻すときに、Array変数は自動的に適切なサイズに設定されます。

GetRowsメソッドのコールは、ダイナセット・オブジェクトの現在の行位置を変更しません。

次の例では、GetRowsメソッドを使用してデータを取り出します。

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
Dim row, col As Integer
Dim fields() 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&)

Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)

'The following line executes GetRows to get all records
data_array = OraDynaset.GetRows()

'Now display all the data in data_array
For row = 0 To UBound(data_array, 2)
    For col = 0 To UBound(data_array, 1)
        Debug.Print data_array(col, row)
    Next col
Next row

'The following lines execute GetRows to get the data from
'the ename and empno fields starting at 5

ReDim fields(2)

fields(0) = "EMPNO"
fields(1) = "ENAME"

'Execute GetRows
data_array = OraDynaset.GetRows(, 5, fields)

'Now display all the data in data_array
For row = 0 To UBound(data_array, 2)
    For col = 0 To UBound(data_array, 1)
        Debug.Print data_array(col, row)
    Next col
Next row


Get_Valueメソッド

適用対象

OraParamArrayオブジェクト

説明

指定した索引にある配列の特定要素の値を戻します。

使用方法

OraParamArray.Get_Value(array, index)

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] array 配列名を表す文字列。
[in] index オブジェクトの索引値を表す整数。

備考

OraParamArray.Get_Valueメソッドは、フィールドの値をVariantで戻します。 パラメータの内容は、data_value = oraparameter.Valueの値によって設定されます。

Oracleのデフォルト日付書式は"DD-MMM-YY"ですが、DATE型のフィールドは、コントロール・パネルで指定されているVisual Basicのデフォルト日付書式で戻されることに注意してください。

Value引数には、OraBLOBオブジェクトなどのOracle Database 10gオブジェクトを使用できます。 Put_Valueの場合は、その時点でオブジェクトのコピーが作成されます。その索引値を参照する新しいオブジェクトを取得するために、Get_Valueへのアクセスが必要です。 たとえば、iotypeORATYPE_BOTHで、ダイナセットから取得したOraBLOBが入力値として渡される場合、新たに更新されたParamaterArrayオブジェクトの出力値を取得するためには、SQLコードが実行された後にGet_Valueをコールする必要があります。

ダイナセットと同様に、ParamaterArrayGet_Valueプロパティから取得したオブジェクトは、常に、そのParamaterArrayの索引について最新の値を参照します。 Visual BasicのNULL値を値として渡すこともできます。 Visual BasicのEMPTY値は、BLOBおよびCLOBに対しては空のLOBを意味する目的で、ObjectVARRAYおよびネストした表のデータ型に対してはオブジェクトの属性がすべてNULLであることを意味する目的で使用できます。

このメソッドは設計時には使用できません。実行時は読取り専用です。

RAW型の列(ServerTypeORATYPE_RAW_BIN)にバインドする場合、値はバイト配列である必要があります。


HypCos(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトの双曲コサインを計算します。

使用方法

OraNumber.HypCos

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


HypSin(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトの双曲サインを計算します。

使用方法

OraNumber.HypSin

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


HypTan(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトの双曲タンジェントを計算します。

使用方法

OraNumber.HypTan

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


InitIteratorメソッド

適用対象

OraCollectionオブジェクト

説明

コレクションをスキャンするイテレータを初期化します。

使用方法

OraCollection.InitIterator

備考

このメソッドは、イテレータを初期化してコレクションの先頭を指すようにします。 このメソッドが同じOracle Database 10gコレクション・インスタンスに対してコールされた場合は、イテレータがコレクションの先頭を指すようにリセットされます。 ダイナセットの行ナビゲーションまたはパラメータRefreshメソッドによって基礎となるコレクションが変更された場合、OraCollectionオブジェクトは自動的にイテレータを再初期化します。

InitIteratorメソッドのコール後、IterNextメソッドをコールしないとコレクションの最初の要素が余分に繰り返されます。

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


IsEqual(OraIntervalDS)メソッド

適用対象

OraIntervalDSオブジェクト

説明

OraIntervalDSオブジェクトが引数と等しいかどうかをチェックします。

使用方法

isEqual = OraIntervalDSObj.IsEqual value

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value 比較するVariant型の文字列、数値またはOraIntervalDSオブジェクト。

備考

ブール値を戻します。OraIntervalDSオブジェクトが引数と等しい場合はTRUE、それ以外の場合はFALSEを戻します。

valueVariant型の文字列の場合は、[+/-]Day HH:MI:SSxFFの書式で記述する必要があります。

valueが数値の場合、提供される値は、構成されたOraIntervalDSオブジェクトが表す合計日数を表す必要があります。


IsEqual(OraIntervalYM)メソッド

適用対象

OraIntervalYMオブジェクト

説明

OraIntervalYMオブジェクトが引数と等しいかどうかをチェックします。

使用方法

isEqual = OraIntervalYMObj.IsEqual value

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value 比較するVariant型の文字列、数値またはOraIntervalYMオブジェクト。

備考

ブール値を戻します。OraIntervalYMオブジェクトが引数と等しい場合はTRUE、それ以外の場合はFALSEを戻します。

valueVariant型の文字列の場合は、[+/-] YEARS-MONTHSの書式で記述する必要があります。

valueが数値の場合、提供される値は、構成されたOraIntervalYMオブジェクトが表す合計年数を表す必要があります。


IsEqual(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトが引数の値と等しいかどうかをチェックします。

使用方法

bool = OraNumber.IsEqual value

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value Variant型の文字列、OraNumberまたは数値

備考

ブール値を戻します。すべての値が等しい場合はTRUE、それ以外の場合はFALSEを戻します。


IsEqual(OraTimeStamp)メソッド

適用対象

OraTimeStampオブジェクト

説明

OraTimeStampオブジェクトが引数と等しいかどうかをチェックします。

使用方法

isEqual = OraTimeStampObj.IsEqual value format

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value 比較するVariant型の文字列、日付またはOraTimeStamp
[in] [オプション] format 値がString型の場合に、valueの解析に使用されるTIMESTAMPの書式文字列を指定します。 formatが指定されていない場合は、値の解析に現行のOraTimeStampオブジェクトのFormatプロパティが使用されます。

備考

ブール値を戻します。OraTimeStampオブジェクトが引数と等しい場合はTRUE、それ以外の場合はFALSEを戻します。 IsEqualメソッドでは、OraTimeStampオブジェクトに格納されているすべての日時値が比較されます。

valueString型の場合、文字列の書式は、format引数で指定した書式と一致する必要があります。 formatを指定しない場合、文字列の書式は、現行のOraTimeStampオブジェクトのFormatプロパティと一致する必要があります。


IsEqual(OraTimeStampTZ)メソッド

適用対象

OraTimeStampTZオブジェクト

説明

OraTimeStampTZオブジェクトが引数と等しいかどうかをチェックします。

使用方法

isEqual = OraTimeStampTZOb.IsEqual value, format

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value 比較するVariant型の文字列、日付またはOraTimeStampTZ
[in] [オプション] format valueString型の場合に、valueの解析に使用されるTIMESTAMP WITH TIME ZONEの書式文字列を指定します。 formatが指定されていない場合は、valueの解析に現行のOraTimeStampTZオブジェクトのFormatプロパティが使用されます。

備考

ブール値を戻します。OraTimeStampTZオブジェクトが引数と等しい場合はTRUE、それ以外の場合はFALSEを戻します。 IsEqualメソッドでは、OraTimeStampTZオブジェクトに格納されている協定世界時(UTC)の日時値のみが比較されます。タイムゾーン情報は無視されます。


注意:

UTCは以前グリニッジ標準時と呼ばれていました。

valueString型の場合、文字列の書式は、format引数で指定した書式と一致する必要があります。 formatを指定しない場合、文字列の書式は、現行セッションのOraTimeStampTZオブジェクトのFormatプロパティと一致する必要があります。

valueDate型の場合、Dateの日時値は、セッションのタイムゾーンの日時値として解析されます。


IsGreater(OraIntervalDS)メソッド

適用対象

OraIntervalDSオブジェクト

説明

OraIntervalDSオブジェクトが引数より大きいかどうかをチェックします。

使用方法

isGreater = OraIntervalDSObj.IsGreater value

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value 比較するVariant型の文字列、数値またはOraIntervalDSオブジェクト。

備考

ブール値を戻します。OraIntervalDSオブジェクトが引数より大きい場合はTRUE、それ以外の場合はFALSEを戻します。

valueVariant型の文字列の場合は、Day [+/-] HH:MI:SSxFFの書式で記述する必要があります。

valueが数値の場合、提供される値は、構成されたOraIntervalDSオブジェクトが表す合計日数を表す必要があります。


IsGreater(OraIntervalYM)メソッド

適用対象

OraIntervalYMオブジェクト

説明

OraIntervalYMオブジェクトが引数より大きいかどうかをチェックします。

使用方法

isGreater = OraIntervalYMObj.IsGreater value

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value 比較するVariant型の文字列、数値またはOraIntervalYMオブジェクト。

備考

ブール値を戻します。OraIntervalYMオブジェクトが引数より大きい場合はTRUE、それ以外の場合はFALSEを戻します。

valueVariant型の文字列の場合は、[+/-] YEARS-MONTHSの書式で記述する必要があります。

valueが数値の場合、提供される値は、構成されたOraIntervalYMオブジェクトが表す合計年数を表す必要があります。


IsGreater(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトが引数の値より大きいかどうかをチェックします。

使用方法

bool = OraNumber.IsGreater value

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value Variant型の文字列、OraNumberオブジェクトまたは数値。

備考

ブール値を戻します。OraNumberオブジェクトが引数より大きい場合はTRUE、それ以外の場合はFALSEを戻します。


IsGreater(OraTimeStamp)メソッド

適用対象

OraTimeStampオブジェクト

説明

OraTimeStampオブジェクトが引数より大きいかどうかをチェックします。

使用方法

isGreater = OraTimeStampObj.IsGreater value format

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value 比較するVariant型の文字列、日付またはOraTimeStamp
[in] [オプション] format valueString型の場合に、値の解析に使用されるTIMESTAMPの書式文字列を指定します。 formatが指定されていない場合は、値の解析に現行のOraTimeStampオブジェクトのFormatプロパティが使用されます。

備考

ブール値を戻します。OraTimeStampオブジェクトが引数より大きい場合はTRUE、それ以外の場合はFALSEを戻します。 IsGreaterメソッドでは、OraTimeStampオブジェクトに格納されているすべての日時値が比較されます。

valueString型の場合、文字列の書式は、format引数で指定した書式と一致する必要があります。 formatを指定しない場合、文字列の書式は、現行のOraTimeStampオブジェクトのFormatプロパティと一致する必要があります。


IsGreater(OraTimeStampTZ)メソッド

適用対象

OraTimeStampTZオブジェクト

説明

OraTimeStampTZオブジェクトが引数より大きいかどうかをチェックします。

使用方法

isGreater = OraTimeStampTZObj.IsGreater value, format

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value 比較するVariant型の文字列、日付またはOraTimeStampTZオブジェクト。
[in] [オプション] format valueString型の場合に、値の解析に使用されるTIMESTAMP WITH TIME ZONEの書式文字列を指定します。 formatが指定されていない場合は、valueの解析に現行のOraTimeStampTZオブジェクトのFormatプロパティが使用されます。

備考

ブール値を戻します。OraTimeStampTZオブジェクトが引数より大きい場合はTRUE、それ以外の場合はFALSEを戻します。 IsGreaterメソッドでは、OraTimeStampTZオブジェクトに格納されているUTCの日時値のみが比較されます。タイムゾーン情報は無視されます。

valueString型の場合、文字列の書式は、format引数で指定した書式と一致する必要があります。 formatを指定しない場合、文字列の書式は、現行のOraTimeStampTZオブジェクトのFormatプロパティと一致する必要があります。

valueDate型の場合、Dateの日時値は、セッションのタイムゾーンの日時値として解析されます。


IsLess(OraIntervalDS)メソッド

適用対象

OraIntervalDSオブジェクト

説明

OraIntervalDSオブジェクトが引数より小さいかどうかをチェックします。

使用方法

isLess = OraIntervalDSObj.IsLess value

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value 比較するVariant型の文字列、数値またはOraIntervalDSオブジェクト。

備考

ブール値を戻します。OraIntervalDSオブジェクトが引数より小さい場合はTRUE、それ以外の場合はFALSEを戻します。

valueVariant型の文字列の場合は、[+/-] Day HH:MI:SSxFFの書式で記述する必要があります。

valueが数値の場合、提供される値は、構成されたOraIntervalDSオブジェクトが表す合計日数を表す必要があります。


IsLess(OraIntervalYM)メソッド

適用対象

OraIntervalYMオブジェクト

説明

OraIntervalYM objectオブジェクトが引数より小さいかどうかをチェックします。

使用方法

isLess = OraIntervalYMObj.IsLess value

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value 比較するVariant型の文字列、数値またはOraIntervalYMオブジェクト。

備考

ブール値を戻します。OraIntervalYMオブジェクトが引数より小さい場合はTRUE、それ以外の場合はFALSEを戻します。

valueVariant型の文字列の場合は、[+/-] YEARS-MONTHSの書式で記述する必要があります。

valueが数値の場合、提供される値は、構成されたOraIntervalYMオブジェクトが表す合計年数を表す必要があります。


IsLess(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトが引数の値より小さいかどうかをチェックします。

使用方法

bool = OraNumber.IsLess value

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value Variant型の文字列、OraNumberオブジェクトまたは数値。

備考

ブール値を戻します。OraNumberオブジェクトが引数より小さい場合はTRUE、それ以外の場合はFALSEを戻します。


IsLess(OraTimeStamp)メソッド

適用対象

OraTimeStampオブジェクト

説明

OraTimeStampオブジェクトが引数より小さいかどうかをチェックします。

使用方法

isLessr = OraTimeStampObj.IsLess value format

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value Variant型の文字列、日付またはOraTimeStamp
[in] [オプション] format 値がString型の場合に、値の解析に使用されるTIMESTAMPの書式文字列を指定します。 書式が指定されていない場合は、値の解析に現行のOraTimeStampオブジェクトのFormatプロパティが使用されます。

備考

ブール値を戻します。OraTimeStampが引数より小さい場合はTRUE、それ以外の場合はFALSEを戻します。 IsLessメソッドでは、OraTimeStampオブジェクトに格納されているすべての日時値が比較されます。

valueString型の場合、文字列の書式は、format引数で指定した書式と一致する必要があります。 formatを指定しない場合、文字列の書式は、現行のOraTimeStampオブジェクトのFormatプロパティと一致する必要があります。


IsLess(OraTimeStampTZ)メソッド

適用対象

OraTimeStampTZオブジェクト

説明

OraTimeSTampTZオブジェクトが引数より小さいかどうかをチェックします。

使用方法

isLess = OraTimeStampTZObj.IsLess value, format

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value Variant型の文字列、日付またはOraTimeStampTZ
[in] [オプション] format valueString型の場合に、値の解析に使用されるTIMESTAMP WITH TIME ZONEの書式文字列を指定します。 formatが指定されていない場合は、valueの解析に現行のOraTimeStampTZオブジェクトのFormatプロパティが使用されます。

備考

ブール値を戻します。OraTimeStampTZオブジェクトが引数より小さい場合はTRUE、それ以外の場合はFALSEを戻します。 IsLessメソッドでは、OraTimeStampTZオブジェクトに格納されているUTCの日時値のみが比較されます。タイムゾーン情報は無視されます。

valueString型の場合、文字列の書式は、format引数で指定した書式と一致する必要があります。 formatを指定しない場合、文字列の書式は、現行のOraTimeStampTZオブジェクトのFormatプロパティと一致する必要があります。

valueDate型の場合、Dateの日時値は、セッションのタイムゾーンの日時値として解析されます。


IterNextメソッド

適用対象

OraCollectionオブジェクト

説明

イテレータがコレクション内の次の要素を指すように移動します。

使用方法

OraCollection.IterNext

備考

イテレータを使用してコレクション要素にアクセスする方が、索引を使用するより高速です。

この機能を実行する前にイテレータがコレクションの最後の要素を指している場合、このメソッドをコールすると、EOCプロパティにTRUEを戻します。 また、イテレータは変更されません。 このメソッドを繰り返しコールするときは、EOCプロパティをチェックしてください。

IterNextメソッドは、InitIteratorメソッドの後にコールしてください。そうしないと、コレクションの最初の要素が余分に繰り返されます。

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


IterPrevメソッド

適用対象

OraCollectionオブジェクト

説明

イテレータがコレクション内の前の要素を指すように移動します。

使用方法

OraCollection.IterPrev

備考

イテレータを使用してコレクション要素にアクセスする方が、索引を使用するより高速です。

この機能を実行する前にイテレータがコレクションの最初の要素を指している場合、このメソッドをコールするとBOCプロパティにTRUEを戻します。 また、イテレータは変更されません。 このメソッドを繰り返しコールするときは、BOCプロパティをチェックしてください。

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


LastServerErrResetメソッド

適用対象

OraDatabaseオブジェクト

OraSessionオブジェクト

説明

指定されたオブジェクトのLastServerErrプロパティを値0(ゼロ)に消去し、LastServerErrTextプロパティをNULLに設定します。

使用方法

oradatabase.LastServerErrResetorasession.LastServerErrReset

備考

このメソッドを使用すると、ユーザー・プログラムでは、Oracleエラーが生成されたプログラム要求の判別が容易になります。


Ln(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトの自然対数(eを底とする)を計算します。

使用方法

OraNumber.Ln

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。

このメソッドでは、OraNumberオブジェクトが0(ゼロ)以下である場合、エラーが発生します。


Log(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトを底として使用し、operandの対数を計算します。

使用方法

OraNumber.Log operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand Variant型の文字列、OraNumberまたは数値

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。

このメソッドでは、OraNumberオブジェクトまたはoperandが0(ゼロ)以下である場合、エラーが発生します。


MatchPos(OraLOB/BFILE)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

OraBFILEオブジェクト

説明

パターンのオフセット位置からn番目のオカレンス位置を戻します。

使用方法

position = OraBlob.MatchPos pattern, offset, nth
position = OraClob.MatchPos pattern, offset, nth
position = OraBFile.MatchPos pattern, offset, nth

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] pattern LOB内で検索する文字列(CLOB)、またはバイト配列(BLOBまたはBFILE)。
[in] Offset LOBまたはBFILEで検索を開始する位置。
[in] nth オカレンス番号。

備考

このコールは現在、DBMS_LOB.INSTR()を使用するPL/SQLブロックを実行することによって実装されています。


Mod(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトをoperandで除算した剰余を取得します。

使用方法

OraNumber.Mod operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand Variant型の文字列、OraNumberまたは数値

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。

operandが0(ゼロ)の場合、エラーが発生します。


MonitorForFailoverメソッド

適用対象

OraDatabaseオブジェクト

説明

アプリケーションのフェイルオーバー通知ハンドラを登録します。

使用方法

OraDatabase.MonitorForFailover FOSink, FOCtx

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] FOSink フェイルオーバー時に通知されるOnFailoverメソッドを実装するIDispatchインタフェース。
[in] FOCtx フェイルオーバー時にアプリケーションがOnFailoverメソッドに渡す必要があるコンテキスト固有の情報。

備考

フェイルオーバー通知を受信するには、通知ハンドラがMonitorForFailoverメソッドに登録されている必要があります。 通知ハンドラは、OnFailoverメソッドを実装するオートメーション・オブジェクト(Visual Basicのクラス・モジュール)であることが必要です。

このメソッドの構文は、次のとおりです。

Public Function OnFailover(Ctx As Variant, fo_type As Variant,fo_event as Variant, fo_OraDB as Variant)
変数 説明
[in] Ctx アプリケーションによってMonitorForFailoverメソッドに渡されます。 フェイルオーバー時にアプリケーションが渡す必要があるコンテキスト依存の情報です。
[in] fo_type Failoverタイプ。 クライアントが要求したフェイルオーバーのタイプです。 次の値を指定できます。
  • OO4O_FO_SESSION。要求されたセッションのフェイルオーバーのみを示します。

  • OO4O_FO_SELECT。要求された選択フェイルオーバーとセッション・フェイルオーバーを示します。

[in]

fo_event

Failoverイベント。 フェイルオーバーの状態を示します。 次の複数の値を設定できます。
  • OO4O_FO_BEGIN。フェイルオーバーで失われた接続が検出され、フェイルオーバーが開始していることを示します。

  • OO4O_FO_END。フェイルオーバーが正常に完了したことを示します。

  • OO4O_FO_ABORT。フェイルオーバーが失敗し、再試行しないことを示します。

  • OO4O_FO_ERROR。フェイルオーバーが失敗し、アプリケーションにエラーを処理しフェイルオーバーを再試行する機会が与えられることを示します。 アプリケーションでは、OO4O_FO_RETRYを戻すOnFailoverメソッドをプログラミングすることによって、フェイルオーバーを再試行できます。

  • OO4O_FO_REAUTH。ユーザー・ハンドルが再認証されたことを示します。 これは、クライアントが1つのデータベース接続で複数のユーザー・セッションを保持している状況に適用されます。 初期フェイルオーバーでは、アクティブなユーザー・セッションのみがフェイルオーバーされます。 他のセッションは、アプリケーションがそれらのセッションを使用しようとしたときにフェイルオーバーされます。 この値は、後続のフェイルオーバー時にコールバックに渡される値です。

[in] fo_OraDB フェイルオーバー中のユーザー・セッションのOraDatabaseオブジェクト。 fo_event変数がOO4O_FO_REAUTHの場合のみ有効です。

フェイルオーバー通知の例

「例: フェイルオーバー通知」を参照してください。


MonitorStart(OraAQ)メソッド

適用対象

OraAQオブジェクト

説明

指定されたメッセージをデキューするモニター・スレッドを開始します。

使用方法

Q.MonitorStart NotificationHandler, CallbackCtx, MsgFilterVal,MsgFilter

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] NotificationHandler 新規メッセージの通知が必要なコールバック・メソッド(NotifyMe)を含むIDispatchインタフェース。
[in] CallbackCtx アプリケーションがNotifyMeメソッドに渡す必要があるコンテキスト固有の情報。 この情報は、ユーザー基準を満たす新しいメッセージがデキューされるたびに、NotifyMeメソッドに渡されます。
[in] [オプション] MsgFilterVal メッセージ・フィルタの値を含むバイト配列。 MsgFilterORAAQ_ANYの場合は無視されます。
[in] [オプション] MsgFilter メッセージの選択基準を指定する整数の定数MsgFilterに指定できる値は、次のとおりです。
  • ORAAQ_ANY = 0: キューに到着したすべてのメッセージに対してコールバックを起動します。 これがデフォルト値になります。

  • ORAAQ_CONSUMER = 1: MsgFilterValueに指定されたコンシューマ向けのメッセージがデキューされたときにコールバックを起動します。

  • ORAAQ_MSGID = 2: MsgFilterValに指定された識別子を含むメッセージがデキューされたときにコールバックを起動します。


備考

NotifyMeは通知オブジェクトのコールバック・メソッドです。 このメソッドの構文は、次のとおりです。

Public Sub NotifyMe (ByVal Ctx As Variant, ByVal Msgid As Variant)

変数 説明
[in] Ctx アプリケーションによってMonitorStartメソッドに渡される値。 メッセージのデキュー時にアプリケーションが渡す必要があるコンテキスト依存の情報です。
[in] Msgid 新しくデキューされたメッセージのメッセージID。 監視中にエラーが発生した場合、Msgid変数はNULLになります。

デフォルトでは、メッセージはRemoveモードでNotifyMeに渡されます。 デフォルトのデキュー・オプションは、このインスタンス(OraAQ)のプロパティを設定することによって上書きできます。

MonitorStartメソッドは、ORAAQ_SUCCESSまたはORAAQ_FAILを戻します。


関連項目:

メッセージの監視


MonitorStop(OraAQ)メソッド

適用対象

OraAQオブジェクト

説明

以前に開始したモニター・スレッドを停止します。

使用方法

Q.MonitorStop

備考

モニターが実行されていない場合は、何も実行しません。


関連項目:

メッセージの監視


MoveFirst、MoveLast、MoveNextおよびMovePreviousメソッド

適用対象

OraDynasetオブジェクト

説明

カーソルの位置を指定されたダイナセット内の最初、最後、次または前の行に変更します。 これらのMoveメソッドはカーソルを次(または前など)の有効な行に移動します。削除された行はスキップします。

使用方法

oradynaset.MoveFirst
oradynaset.DbMoveFirst

oradynaset.MoveLast
oradynaset.DbMoveLast

oradynaset.MovePrevious
oradynaset.DbMovePrevious

oradynaset.MoveNext
oradynaset.DbMoveNext

備考

データ・コントロール・ボタンは(左から右または上から下へ)MoveFirstMovePreviousMoveNextおよびMoveLastの各メソッドにマップされます。 データ・コントロール・ボタンの使用時は、BOFおよびEOFプロパティはTRUEになりません。

最初または最後のレコードがカレント・レコードの場合は、MoveFirstメソッドまたはMoveLastメソッドを使用してもレコードは移動しません。 ダイナセットに対してMoveLastメソッドを使用すると、問合せが強制終了します。

最初のレコードがカレント・レコードの場合にMovePreviousメソッドを使用すると、カレント・レコードがなくなり、BOFがTRUEになります。 MovePreviousメソッドを再度使用するとエラーが発生します。ただし、BOFTRUEのままです。 最後のレコードがカレント・レコードの場合にMoveNextメソッドを使用すると、カレント・レコードがなくなり、EOFがTRUEになります。 MoveNextメソッドを再度使用するとエラーが発生します。ただし、EOFはTRUEのままです。 ORADYN_NO_MOVEFIRSTオプションを使用してダイナセットを作成すると、ダイナセットが空でも空でなくても、BOFおよびEOFはTRUEになります。

ダイナセットのオープン時、BOFFALSEで、最初のレコードがカレント・レコードです。 ダイナセットが空の場合、BOFおよびEOFは両方ともTRUEで、カレント・レコードは存在しません。

EditまたはAddNew操作が保留中のときに、データ・コントロールを介してMoveメソッドのいずれかを間接的に使用すると、Updateメソッドが自動的にコールされます。ただし、このメソッドはValidateイベント中に停止できます。

EditまたはAddNew操作が保留中のときに、データ・コントロールを介さずにMoveメソッドのいずれかを直接使用すると、保留中のEditまたはAddNew操作によって、既存の変更内容が失われます。ただし、エラーは発生しません。

データは、必要に応じてデータベースからフェッチされます。したがって、MoveFirst操作に続いてMoveNext操作を実行すると、ミラー化された(キャッシュされた)ローカル・セットが、追加データの先読みなしに、増分構築されます。 ただし、MoveLast操作を実行するには、問合せ全体を評価してローカルに格納する必要があります。

ダイナセットがデータ・コントロールに付加されている場合、これらのメソッドは、最初にレコードの移動開始をデータ・コントロールのValidateイベントに通知します。 Validateハンドラは移動要求を拒否する可能性があります。この場合、要求は無視されます。 レコード・ポインタが正常に移動すると、データ・コントロールに付加されているすべてのカスタム・コントロールに、新しいレコード位置が自動的に通知されます。

この例では、MoveFirstMoveNextMoveLastおよびMovePreviousの各メソッドを使用してダイナセット内のレコードを移動する方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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 the OraDynaset Object.
 Set OraDynaset = OraDatabase.CreateDynaset("select empno, ename from emp", 0&)

MsgBox "Employee #" & OraDynaset.Fields("empno").value & ", " & _
             OraDynaset.Fields("ename").value

 'Move to the next record and display it.
 OraDynaset.MoveNext
 MsgBox "Employee #" & OraDynaset.Fields("empno").value & ", " & _
              OraDynaset.Fields("ename").value

 'Move to the last record and display it.
 OraDynaset.MoveLast
 MsgBox "Employee #" & OraDynaset.Fields("empno").value & ", " & _
              OraDynaset.Fields("ename").value

 'Move to the previous record and display it.
 OraDynaset.MovePrevious
 MsgBox "Employee #" & OraDynaset.Fields("empno").value & ", " & _
             OraDynaset.Fields("ename").value


End Sub


MovePreviousn、MoveNextn、MoveRelおよびMoveToメソッド

適用対象

OraDynasetオブジェクト

説明

指定されたダイナセット内の指定された行にカーソル位置を変更します。

使用方法

oradynaset.MovePreviousn offset
oradynaset.MoveNextn offset
oradynaset.MoveRel offset
oradynaset.MoveTo offset

MoveNextnメソッド

オフセットのレコード分、次に進みます。

MovePreviousnメソッド

オフセットのレコード分、前に戻ります。

MoveRelメソッド

現行の行を基準にしてオフセットのレコード分、移動します。 正の値(プラス(+)記号で示される)は、カーソルを表の下方に移動し、負の値はカーソルを表の上方に移動します。

MoveToメソッド

行番号オフセットに直接移動します。

備考

カーソルがMoveNextnMoveRelまたはMoveToメソッドを使用してダイナセットの最後を超えて移動すると、EOFが設定されます。 カーソルがMovePreviousnMoveRelまたはMoveToメソッドを使用してダイナセットの最初を超えて移動すると、BOFが設定されます。 MoveNextnMovePreviousnおよびMoveToメソッドは正の整数のみオフセットとして受け入れます。 MoveRelメソッドは、正と負の両方の整数をオフセットとして受け入れます。

MoveTo rownumは、行が削除されていないかぎり、常に同じ行を取得します。 要求された行が削除されている場合、MoveToメソッドは次の有効な行に移動します。 MoveNextnMovePreviousnMoveRelおよびMoveToメソッドは削除された行を考慮しません。したがって、行番号の相対的位置を基準にこれらのメソッドを使用する場合は注意してください。

データ型

Long Integer

この例では、MovePreviousnMoveNextnMoveRelおよびMoveToメソッドの使用方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

 Private Sub Form_Load()
  Dim OraSession As OraSession
  Dim OraDatabase As OraDatabase
  Dim OraDynaset As OraDynaset
  Dim OraFields As OraFields

  Set OraSession = CreateObject("OracleInProcServer.XOraSession")
  Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "SCOTT/TIGER", 0&)
  Set OraDynaset = OraDatabase.CreateDynaset("select * from emp where empno" & _
             ">=7654 and empno <= 7844 ", ORADYN_NO LANKSTRIP)
  Set OraFields = OraDynaset.Fields

  'Move to 3rd record from the first record
  OraDynaset.MoveNextn 3  'Should set EOF to true
  MsgBox OraFields("ename").Value  ' Should be display SCOTT

  If OraDynaset.EOF = True Then
    MsgBox "End of the record reached"
  End If

  'Move back from the current record by the offset 2
  OraDynaset.MovePreviousn 2
  MsgBox OraFields("ename").Value  ' Should be display BLAKE

  If OraDynaset.BOF = True Then
    MsgBox "Start of the record reached"
  End If

  'Move relative in the forward direction
  OraDynaset.MoveRel 2
  MsgBox OraFields("ename").Value  ' Should be display SCOTT

  If OraDynaset.EOF = True Then
    MsgBox "End of the record reached"
  End If

  'Move relative in the backward direction
  OraDynaset.MoveRel -2
  MsgBox OraFields("ename").Value  ' Should be display BLAKE

  If OraDynaset.BOF = True Then
    MsgBox "Start of the record reached"
  End If

  'Move to the record position 4 in the current dynaset
   OraDynaset.MoveTo 4
   MsgBox OraFields("ename").Value  ' Should be display SCOTT

End Sub


Mul(OraIntervalDS)メソッド

適用対象

OraIntervalDSオブジェクト

説明

OraIntervalDSオブジェクトに乗数を乗算します。

使用方法

OraIntervalDSObj.Mul multiplier

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] multiplier 乗数として使用するVariant型の数値またはOraNumberオブジェクト。

備考

この操作の結果は、OraIntervalDSオブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。


Mul(OraIntervalYM)メソッド

適用対象

OraIntervalYMオブジェクト

説明

OraIntervalYMオブジェクトに乗数を乗算します。

使用方法

OraIntervalYMObj.Mul multiplier

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] multiplier 乗数として使用するVariant型の数値またはOraNumberオブジェクト。

備考

この操作の結果は、OraIntervalYMオブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。


Mul(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトにoperandを乗算します。

使用方法

OraNumber.Mul operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand Variant型の文字列、OraNumberまたは数値

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


Neg(OraIntervalDS)メソッド

適用対象

OraIntervalDSオブジェクト

説明

OraIntervalDSオブジェクトを否定します。

使用方法

OraIntervalDSObj.Neg

備考

この操作の結果は、OraIntervalDSオブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。


Neg(OraIntervalYM)メソッド

適用対象

OraIntervalYMオブジェクト

説明

OraIntervalYMオブジェクトを否定します。

使用方法

OraIntervalYMObj.Neg

備考

この操作の結果は、OraIntervalYMオブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。


Neg(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトを否定します。

使用方法

OraNumber.Neg

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


Open(OraServer)メソッド

適用対象

OraDatabaseオブジェクト

OraServerオブジェクト

説明

Oracleデータベースへの接続を確立します。

使用方法

OraServer.Open serverAlias

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] serverAlias データベースへの接続に使用するネットワーク別名を含む文字列。

備考

引数を指定しないと、前回接続を解除したデータベースに接続します。


Open(OraBFILE)メソッド

適用対象

OraBFILEオブジェクト

説明

BFILEをオープンします。

使用方法

OraBfile.Open

備考

このメソッドは、BFILE値にアクセスする前にコールしてください。


OpenDatabaseメソッド

適用対象

OraSessionオブジェクト

OraServerオブジェクト

説明

データベースへのユーザー・セッションを確立します。 所定のデータベース名、接続文字列および指定したオプションを使用して、新しいOraDatabaseオブジェクトを作成します。

使用方法

Set oradatabase = orasession.OpenDatabase(database_name,connect_string, options) Set oradatabase = oraserver.OpenDatabase(connect_string, options)

引数

このメソッドの引数は、次のとおりです。

引数 説明
database_name データ・コントロールをデータベースに接続するときに使用するOracleネットワーク指定子。
connect_string Oracleデータベースに接続するときに使用するユーザー名とパスワード。
options データベースのオプション・モードの設定に使用するビット・フラグ文字。 options = 0の場合は、デフォルトのモード設定が適用されます。 次の表に、使用可能なモードを示します。各モードは、それぞれの値を追加することで組み合せることができます。

定数

次の表に、オプション・フラグの定数とその値を示します。

定数 説明
ORADB_DEFAULT &H0& Visual Basicモード(デフォルト):

AddNewまたはEditメソッドの使用時に、明示的に設定されていないフィールド(列)の値はNULLに設定されます。 NULL値は、データベースの列値のデフォルトを上書きします。 Edit"SELECT...FOR UPDATE")の使用時に、行のロック解除を待機します。

SQLの非ブロック機能は、使用できなくなります。

ORADB_ORAMODE &H1& Oracleモード:

AddNewメソッドの使用時に、Oracleデータベースにより、デフォルトのフィールド(列)値が設定されます。 挿入または追加操作の後、Oracleのデフォルトの列値はただちにデータベースから再度フェッチされます。

注意: トリガーを使用する場合は、完全なOracleモードを使用してデータを再度フェッチしてください。

ORADB_NOWAIT &H2& ロック非待機モード:

行のロック解除を待機しません。 Editメソッドを使用して他のユーザーまたはプロセスがロックしている行を更新すると、ロック非待機モードでは、ただちにエラー・コードが戻されます。

注意: このオプションは、OraDynasetオブジェクトにのみ適用されます。 OraSQLStmtオブジェクトまたはExecuteSQLコールには影響を与えません。 行がロックされていると、エラーが発生します。

ORADB_NO_REFETCH &H4& Oracleモード(再フェッチなし):

Oracleモードと同様に実行されますが、データはローカル・キャッシュに再フェッチされません。 これによってパフォーマンスが向上します。

注意: データベースの列のデフォルトのために、データベースのデータとローカル・キャッシュが不一致になるため、行を編集せずに挿入する場合にのみ、再フェッチなしモードを使用してください。 このモードで挿入した後に編集しようとすると、「データは変更されています。」(4119)エラーが発生します。

ORADB_NONBLK &H8& 非ブロックモード:

SQL文の実行時は、非ブロック・モードをオンにします。 非ブロック・モードは、ExecuteSQLCreateDynasetまたはCreateSQLメソッドを使用して処理するSQL文に影響を与えます。

注意: この機能は使用不可になっています。

ORADB_ENLIST_IN_MTS &H10& MTSモードでのリスト:

OraDatabaseオブジェクトをMicrosoft Transaction Server(MTS)モードでリストするかどうかを判断します。

ORADB_ENLIST_FOR_ CALLLBACK &H20& コールバック・モードでのリスト:

イベント通知をオンにします。 フェイルオーバー通知を受信するには、このモードを使用可能にする必要があります。


これらの値は、oraconst.txtファイルにあります。 有効なデータベース別名の作成方法については、『Oracle Net Services管理者ガイド』を参照してください。

有効なconnect_stringの引数の例を次に示します。

備考

OraConnectionオブジェクトは自動的に作成され、セッションのOraConnectionsコレクション内に表示されます。 データベースのオープンは、接続のオープンに影響を与えますが、SQL処理は実行しません。

次の接続エラーが戻される可能性があります。

ORA-28001 「パスワードが期限切れです。」

ChangePasswordメソッドを使用すると、パスワードを変更できます。

この例では、ダイナセットおよび基礎となるすべてのオブジェクトをプログラムで作成する方法を示します。 このコードをコピーして、txtEmpNoおよびtxtENameという名前のテキスト・ボックスのあるフォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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 the OraDynaset Object.
 Set OraDynaset = OraDatabase.CreateDynaset("select empno, ename from emp", 0&)

 'Display the first record.
 txtEmpNo = OraDynaset.Fields("empno").value
 txtEName = OraDynaset.Fields("ename").value

End Sub


OriginalItemメソッド

適用対象

OraFieldsコレクション

説明

ダイナセットのSELECT文で使用された元の列名に基づいてOraFieldオブジェクトを戻します。設計時には使用できません。実行時は読取り専用です。

使用方法

set OraField = OraFields.OriginalItem(field_index)
set OraField = OraFields.OriginalItem(original_name)

引数

このメソッドの引数は、次のとおりです。

引数 説明
field_index 元の列名のフィールド索引。
original_name SQL文に指定した元のフィールド名。

備考

このプロパティは、SQL文に'schema.table.col'のフィールド名が含まれている場合に、その元の名前に固有のフィールド・オブジェクトを取得するときに便利です。

次の例では、OriginalItemメソッドの使用方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset As OraDynaset
 Dim OraFields As OraFields

 '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 OraDynaset = OraDatabase.CreateDynaset("select scott.emp.deptno," & _
     "dept.deptno from scott.emp, scott.dept where dept.deptno = emp.deptno", 0&)
 'Get the Field collection object
 Set OraFields = OraDynaset.Fields

 'get the original field object. Returns "scott.emp.deptno"

 MsgBox OraField.OriginalName

 Set OraField = OraFields.OriginalItem(1)

 'Returns "dept.deptno"
 MsgBox OraField.OriginalName

End Sub


OriginalName

適用対象

OraFieldオブジェクト

説明

ダイナセットのSELECT文で使用された元の列名を戻します(これに対し、Nameプロパティが戻す値は、サーバーで表示されるフィールド名です)。設計時には使用できません。実行時は読取り専用です。

使用方法

field_name = Orafield.OriginalName

備考

orafield.OriginalNameメソッドは、指定したOraFieldオブジェクトの名前を戻します。 このメソッドにより、ダイナセットの作成時にSQL文に指定された元の列名が戻されます。 SQL文に、'schema.table.col'のフィールド名が含まれている場合に便利です。 これにより、重複した列名を参照できるようになります (SQL文で別名を使用することによって、列名の重複を回避する方法もあります)。

次の例では、OriginalNameプロパティの使用方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset As OraDynaset
 Dim OraFields As OraFields

 '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 OraDynaset = OraDatabase.CreateDynaset("select scott.emp.deptno," & _
    "dept.deptno from scott.emp, scott.dept where dept.deptno = emp.deptno", 0&)

 Set OraFields = OraDynaset.Fields

 'Returns "DEPTNO"
 MsgBox OraFields(0).Name

 'Returns "scott.emp.deptno"
 MsgBox OraFields(0).OriginalName

 'Returns "dept.deptno"
 MsgBox OraFields(1).OriginalName

End Sub


Power(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトをオペランド乗します。

使用方法

OraNumber.Power operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand Variant型の文字列、OraNumberまたは数値

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


Put_Valueメソッド

適用対象

OraParamArrayオブジェクト

説明

表のパラメータに値を挿入します。

使用方法

OraParamArray.Put_Value(value, index)

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] value 挿入する値を表すVariant
[in] index オブジェクトの索引値を表す整数。

備考

表の行にアクセスする前に値を挿入するには、このメソッドを使用してください。 行に値を割り当てるまで、行には有効な値が含まれません。 表内の未割当ての行を参照すると、OLEオートメーション・エラーが発生します。

value引数には、OraBLOBなどのOracle Database 10gオブジェクトを使用できます。 Put_Valueの場合は、その時点でオブジェクトのコピーが作成されます。その索引値を参照する新しいオブジェクトを取得するために、Get_Valueへのアクセスが必要です。 たとえば、iotypeORATYPE_BOTHで、ダイナセットから取得したOraBLOBが入力値として渡される場合、新たに更新されたParamaterArrayの出力値を取得するためには、SQLが実行された後にGet_Valueをコールする必要があります。

ダイナセットと同様に、ParamaterArrayGet_Valueメソッドから取得したオブジェクトは、常に、そのParamaterArray索引について最新の値を参照します。 Visual BasicのNULL値を値として渡すこともできます。 Visual Basicの値EMPTYは、BLOBおよびCLOBに対しては空のLOBを意味する目的で、OBJECTVARRAYおよびNESTED TABLEに対しては、オブジェクトの属性がすべてNULLであることを意味する目的で使用できます。

RAW型の列(ServerTypeORATYPE_RAW_BIN)にバインドする場合、値はバイト配列である必要があります。


Read(OraLOB/BFILE)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

OraBFILEオブジェクト

説明

BLOBCLOBまたはBFILE値の指定部分をバッファに読み込みます。 読込みデータ長の合計数を戻します。

使用方法

amount_read = OraBlob.Read buffer, chunksize
amount_read = OraClob.Read buffer, chunksize
amount_read = OraBfile.Read buffer, chunksize

引数

このメソッドの引数は、次のとおりです。

引数 説明
[out] buffer OraCLOBの場合はVariant型の文字配列、OraBLOBまたはピースの読込み元のOraBFILEの場合はVariant型のバイト配列。
[in] [オプション] chunksize 読取り量を指定するための整数。 デフォルト値は、LOBのサイズです。 OraBLOBまたはOraBFILEの場合はバイト数、OraCLOBの場合は文字数を示します。
[out] amount_read 読込みデータ長の合計数を表す整数。 OraBLOBまたはOraBFILEの場合はバイト数、OraCLOBの場合は文字数を示します。

備考

Offsetプロパティで指定されたオフセットからLOBデータまたはBFILEデータを読み込みます。 複数ピースの読込み操作の場合は、PollingAmountプロパティを読込みデータ長の合計数の値に設定し、Statusプロパティをチェックして各ピースの操作が正常に実行されたことを確認する必要があります。


注意:

LOBの一部を読み込む場合は、chunksizeパラメータを使用せず、PollingAmountプロパティを設定することをお薦めします。 これによって、LOB全体が読み込まれる前に別のLOBメソッドが実行された場合に発生するエラーを回避できます。

「LOBデータ型の例で使用されているスキーマ・オブジェクト」の説明に従ってOraLOBスキーマ・オブジェクトをインストールしていることを確認してください。

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

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
Dim PartImage As OraBlob
Dim chunksize As Long
Dim AmountRead As Long
Dim buffer As Variant
Dim buf 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&)

'Create the OraDynaset Object.
Set OraDynaset = OraDatabase.CreateDynaset("select * from part", 0&)

'Get OraBlob from OraDynaset
Set PartImage = OraDynaset.Fields("part_image").Value

'Set Offset and PollingAmount property for piecewise Read operation
PartImage.offset = 1
PartImage.PollingAmount = PartImage.Size
chunksize = 50000

'Get a free file number
FNum = FreeFile

'Open the file
Open "image.dat" For Binary As #FNum

'Do the first read on PartImage, buffer must be a variant
AmountRead = PartImage.Read(buffer, chunksize)

'put will not allow Variant type
buf = buffer
Put #FNum, , buf

' Check for the Status property for polling read operation
While PartImage.Status = ORALOB_NEED_DATA
    AmountRead = PartImage.Read(buffer, chunksize)
    buf = buffer
    Put #FNum, , buf
Wend

Close FNum

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

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim PartDesc As OraClob
Dim AmountRead As Long
Dim buffer As Variant
Dim buf As String

'Create the OraSession Object.
Set OraSession = CreateObject("OracleInProcServer.XOraSession")

'Create the OraDatabase Object.
Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)

'Add PartDesc as an Output parameter and set its initial value.
OraDatabase.Parameters.Add "PartDesc", Null, ORAPARM_OUTPUT
OraDatabase.Parameters("PartDesc").ServerType = ORATYPE_CLOB

'Execute the statement returning 'PartDesc'
OraDatabase.ExecuteSQL ("BEGIN select part_desc into :PARTDESC from" & _
             "part where part_id = 1 for update NOWAIT; END;")

'Get 'PartDesc' from Parameters collection
Set PartDesc = OraDatabase.Parameters("PartDesc").Value

'Get a free file number
FNum = FreeFile

'Open the file.

Open "Desc.Dat" For Binary As #FNum

'Read entire CLOB value, buffer must be a Variant
AmountRead = PartDesc.Read(buffer)

'put will not allow Variant type
buf = buffer
Put #FNum, , buf

Close FNum


ReadChunkメソッド

適用対象

OraFieldオブジェクト

説明

LONGまたはLONG RAW型のフィールドの全体または一部のバイト数を含む文字列を戻します。

使用方法

data_string = orafield.ReadChunk(offset, numbytes, bytesread)

引数

このメソッドの引数は、次のとおりです。

引数 説明
offset データのコピー前にスキップするフィールド内のバイト数。
numbytes コピーするバイト数。
bytesread 実際に読み込まれたバイト数。

備考

ReadChunkメソッドはGetChunkメソッドと同じように動作しますが、実際に読み込まれたバイト数をbytesread引数で戻します。


Refreshメソッド

適用対象

OraDynasetオブジェクト

OraSQLStmtオブジェクト

説明

現行のConnectDatabaseNameおよびSQLプロパティについて、ダイナセットをただちに更新します。

SQL文オブジェクト内のSQL文を再実行することによって、ダイナセットをただちに更新します。

使用方法

oradynaset.Refresh
oradynaset.DbRefresh
orasqlstmt.Refresh
orasqlstmt.DbRefresh

備考

このメソッドは、すべての編集操作(EditおよびAddNewメソッド)を取り消して、SQL文バッファの現在の内容を実行し、結果のダイナセットの最初の行に移動します。 Refreshメソッドの発行前に作成されたダイナセット・オブジェクト(ブックマーク、レコード・カウントおよびフィールド・コレクションなど)は無効とみなされます。 以前のダイナセットに関連付けられているOraConnectionおよびOraSessionオブジェクトは変更されずにそのまま残ります。

このメソッドを使用してリフレッシュ操作を実行した方が、データ・コントロールによるリフレッシュより効率的です。 また、このメソッドを使用すると、変更したSQL文を新しいダイナセットまたはOraSQLStmtオブジェクトを作成せずに実行できます。

必要なデータベース操作(SQLの解析やバインドなど)が最小限に抑えられるため、oradynaset.Refreshまたはorasqlstmt.Refreshは、パラメータ値の変更に役立つリフレッシュ・メソッドです。 このメソッドは、パラメータの値のみを変更した場合にパフォーマンスを向上できます。

Refreshメソッドが、無効なSQL文をダイナセットまたはSQL文オブジェクトのSQLプロパティに割り当てた後にコールされた場合も、これらのオブジェクトは有効です。 ただし、この状態のダイナセットでは、行またはフィールドを操作できません。 バインド済コントロールも異常な動作を示します。Visual Basicの標準的なデータ・コントロールのRecordSourceが、実行時に無効なSQL文に設定され、その後リフレッシュされた場合と同じ動作になります。

有効なSQL文を使用してオブジェクトをリフレッシュすると、通常のダイナセットとSQL文の操作に戻ります。 Refreshメソッドは、NULLまたは空のSQL文を無効とみなします。

Refreshメソッドの例(OraDynaset)

この例では、パラメータ、RefreshメソッドおよびSQLプロパティを使用して選択レコードを制限する方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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 parameter with an initial value.
 OraDatabase.Parameters.Add "job", "MANAGER", 1

 'Create the OraDynaset Object.
 Set OraDynaset =OraDatabase.CreateDynaset("select * from emp where job=:job",0&)

 'Notice that the SQL statement is NOT modified.
 MsgBox OraDynaset.SQL

 'Currently, OraDynaset only contains employees whose job is MANAGER.
 'Change the value of the job parameter.

 OraDatabase.Parameters("job").Value = "SALESMAN"

 'Refresh the dynaset.
 OraDynaset.Refresh

 'Currently, OraDynaset only contains employees whose job is SALESMAN.
 'Notice that the SQL statement is NOT modified.
 MsgBox OraDynaset.SQL

 'Remove the parameter.
 OraDatabase.Parameters.Remove ("job")

 End Sub

Refreshメソッドの例(OraSQLStmt)

この例では、パラメータ、Refreshメソッド、およびOraSQLStmtオブジェクトのSQLプロパティの使用方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

 'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraSqlStmt As OraSQLStmt

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

 OraDatabase.Parameters.Add "EMPNO", 7369, 1
 OraDatabase.Parameters("EMPNO").ServerType = 2  'ORATYPE_NUMBER
 OraDatabase.Parameters.Add "ENAME", 0, 2
 OraDatabase.Parameters("ENAME").ServerType = 1  'ORATYPE_VARCHAR2

 Set OraSqlStmt = OraDatabase.CreateSQL("Begin Employee.GetEmpName (:EMPNO," & _
              ":ENAME); end;", 0&)

 'Notice that the SQL statement is NOT modified.
 MsgBox OraSqlStmt.SQL

 'Should display SMITH
 MsgBox OraDatabase.Parameters("ENAME").Value

 'Change the value of the empno parameter.
 OraDatabase.Parameters("EMPNO").Value = 7499

 'Refresh the dynaset.
 OraSqlStmt.Refresh

 'Should display ALLEN
 MsgBox OraDatabase.Parameters("ENAME").Value

 'Notice that the SQL statement is NOT modified.
 MsgBox OraSqlStmt.SQL

 'Remove the parameter.
 OraDatabase.Parameters.Remove ("job")

 End Sub


Refresh(OraRef)メソッド

適用対象

OraRefオブジェクト

説明

最新のデータベース・スナップショットから参照可能なオブジェクトをリフレッシュします。

使用方法

OraRef.Refresh


Registerメソッド

適用対象

OraSubscriptionオブジェクト

説明

サブスクリプションをアクティブにします。

使用方法

orasubscription.Register

備考

指定したデータベース・イベントが起動すると、このサブスクリプションの作成時に渡されたdbeventハンドラのNotifyDBeventsメソッドがコールされます。

詳細な例は、「例: データベース・イベントが通知されるようにアプリケーションを登録する方法」を参照してください。


Removeメソッド

適用対象

OraParametersコレクション

説明

OraParametersコレクションからパラメータを削除します。

使用方法

oraparameters.Remove(member_name)

引数

このメソッドの引数は、次のとおりです。

引数 説明
member_name 0Count-1の範囲で整数の添字を指定するVariantまたはパラメータ名。

備考

不要なパラメータの追加と削除を繰り返すのではなく、AutoBindDisableおよびAutoBindEnableメソッドを使用してください。

ORATYPE_CURSOR型のOraParameterの場合は、このメソッドにより、カーソルに関連付けられたダイナセット・オブジェクトが破棄され、ローカル・キャッシュのテンポラリ・ファイルが消去されます。

「例: ExecuteSQL」を参照してください。


Remove(OraSubscriptionsコレクション)メソッド

適用対象

OraSubscriptionsコレクション

説明

OraSubscriptionsコレクションからサブスクリプションを削除します。

使用方法

orasubscriptions.Remove(member)

引数

このメソッドの引数は、次のとおりです。

引数 説明
member 0Countの範囲で整数の添字を指定するVariantまたはサブスクリプション名。

備考

このメソッドは、アクティブなサブスクリプションを登録解除(削除)し、関連付けられたサブスクリプションを破棄します。


RemoveFromPoolメソッド

適用対象

OraDatabaseオブジェクト

説明

プールからOraDatabaseオブジェクトを削除します。

使用方法

OraDatabase.RemoveFromPool

備考

このメソッドは、GetDatabaseFromPoolメソッドを使用してプールから取り出したOraDatabaseオブジェクトにのみ適用されます。

OraDatabaseオブジェクトがプールのメンバーでない場合、例外またはエラーは発生しません。

このメソッドは、接続がすでに無効になっているプールからOraDatabaseオブジェクトを削除する場合に便利です。


ResetTransメソッド

適用対象

OraConnectionオブジェクト

OraSessionオブジェクト

説明

すべてのトランザクションを無条件にロール・バックし、BeginTransメソッドによって開始されたトランザクション・モードを消去します。

使用方法

oraconnection.ResetTransorasession.ResetTrans

備考

このメソッドでは、イベントもエラーも生成されません。 ResetTransメソッドはイベントを生成しないため、ロールバック操作やコミット操作のように、ValidateイベントのResetTransメソッドを取り消すことはできません。

注意: OraDatabaseオブジェクトがMicrosoft Transaction Server(MTS)にリストされていて、グローバルMTSトランザクションの一部である場合、このメソッドは無効です。

この例では、BeginTransおよびResetTransメソッドを使用して、ダイナセットに対する一連の編集を1つのトランザクションにグループ化する方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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 the OraDynaset Object.
Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)

 'Start Transaction processing.
 OraDynaset.Session.BeginTrans

 'Traverse until EOF is reached, setting each employee's salary to zero.
 Do Until OraDynaset.EOF
   OraDynaset.Edit
   OraDynaset.Fields("sal").value = 0
   OraDynaset.Update
   OraDynaset.MoveNext
 Loop
 MsgBox "All salaries set to ZERO."

 'Currently, the changes have NOT been committed to the database.
 'End Transaction processing.
 'Using ResetTrans means the rollback cannot be canceled in the Validate event.
 OraDynaset.Session.ResetTrans
 MsgBox "Salary changes rolled back."

End Sub


Rollbackメソッド

適用対象

OraConnectionオブジェクト

OraDatabaseオブジェクト

OraSessionオブジェクト

説明

現在のトランザクションを終了し、保留中の変更すべてをデータベースにロールバックします。

使用方法

oraconnection.Rollback
orasession.Rollback
oradatabase.Rollback

備考

このメソッドをコールすると、指定したセッションまたは接続を共有するすべてのOraDynasetオブジェクトに対して、ロールバック要求を取り消す機会が与えられます。 要求を取り消さない場合は、ロールバックが正常終了した時点でオブジェクトに通知されます。

この機能は、Oracle Data Control操作の一部として作成されるダイナセットに特に便利です。 これらのダイナセットに対して、Validateイベントを送信し、ロールバック要求を取り消すことができるようにします。


注意:

OraDatabaseオブジェクトがMicrosoft Transaction Server(MTS)にリストされていて、グローバルMTSトランザクションの一部である場合、このメソッドは無効です。

この例では、BeginTransおよびRollbackメソッドを使用して、ダイナセットに対する一連の編集を1つのトランザクションにグループ化する方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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 the OraDynaset Object.
Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)

 'Start Transaction processing.
 OraDynaset.Session.BeginTrans

 'Traverse until EOF is reached, setting each employee's salary to zero.
 Do Until OraDynaset.EOF
   OraDynaset.Edit
   OraDynaset.Fields("sal").value = 0
   OraDynaset.Update
   OraDynaset.MoveNext
 Loop
 MsgBox "All salaries set to ZERO."

 'Currently, the changes have NOT been committed to the database.
 'End Transaction processing.
 OraDynaset.Session.Rollback
 MsgBox "Salary changes rolled back."

End Sub

Round(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトを指定された小数位に四捨五入します。

使用方法

OraNumber.Power decplaces

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] decplaces 小数点から右の桁数を指定して四捨五入する位置を示す整数。 負の値も指定可能で、小数点から左の桁数を示します。

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


SetPi(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトをπ(パイ)に設定します。

使用方法

OraNumber.SetPi

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


Sin(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

ラジアンで指定されたOraNumberオブジェクトのサインを計算します。

使用方法

OraNumber.Sin

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


Sqrt(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトの平方根を計算します。

使用方法

OraNumber.Sqrt

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。

OraNumberオブジェクトが0(ゼロ)未満である場合、このメソッドはエラーを戻します。


Sub(OraIntervalDS)メソッド

適用対象

OraIntervalDSオブジェクト

説明

OraIntervalDSオブジェクトから引数を減算します。

使用方法

OraIntervalDSObj.Sub operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand 減算するVariant型の文字列、数値またはOraIntervalDSオブジェクト。

備考

この操作の結果は、OraIntervalDSオブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。

operandVariant型の文字列の場合は、[+/-]Day HH:MI:SSxFFの書式で記述する必要があります。

operandが数値の場合、提供される値は、構成されたOraIntervalDSオブジェクトが表す合計日数を表す必要があります。


Sub(OraIntervalYM)メソッド

適用対象

OraIntervalYMオブジェクト

説明

OraIntervalYMオブジェクトから引数を減算します。

使用方法

OraIntervalYMObj.Sub operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand 減算するVariant型の文字列、数値またはOraIntervalYMオブジェクト。

備考

この操作の結果は、OraIntervalYMオブジェクトに格納され、以前の値は上書きされます。 戻り値はありません。

operandVariant型の文字列の場合は、[+/-] YEARS-MONTHSの書式で記述する必要があります。

operandが数値の場合、提供される値は、構成されたOraIntervalYMオブジェクトが表す合計年数を表す必要があります。


Sub(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberオブジェクトから数値引数を減算します。

使用方法

OraNumber.Sub operand

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] operand Variant型の文字列、OraNumber型または数値。

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


Tan(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

ラジアンで指定されたOraNumberオブジェクトのタンジェントを計算します。

使用方法

OraNumber.Tan

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


ToDateメソッド

適用対象

OraTimeStampオブジェクト

OraTimeStampTZオブジェクト

説明

OraTimeStampまたはOraTimeStampTZオブジェクトからDate型のコピーを戻します。

使用方法

Set date = OraTimeStampObj.ToDate
Set date = OraTimeStampTZObj.ToDate

備考

このメソッドは、日時値をDateデータ型で戻します。 その結果、日時値がVB日付の許容範囲外の場合は調整されます。

OraTimeStampオブジェクトの使用方法

Dim OraTimeStamp As OraTimeStamp

...
'Create OraTimeStamp using a string
Set OraTimeStamp = OraSession.CreateOraTimeStamp("1999-APR-29 12:10:23.444 AM", _
       "YYYY-MON-DD HH:MI:SS.FF AM")

' returns a Date type with date value set to "1999-APR-29 12:10:23 AM"
' note that the fractional part is dropped
Set date = OraTimeStamp.ToDate

OraTimeStampTZオブジェクトの使用方法

Dim OraTimeStampTZ As OraTimeStampTZ

...
'Create OraTimeStampTZ using a string
Set OraTimeStampTZ = OraSession.CreateOraTimeStampTZ("2000-12-28" & _
        "12:10:23.444 -07:00", "YYYY-MM-DD HH:MI:SS.FF TZH:TZM")

'returns a Date type with date value set to "2000-12-28 12:10:23"
'note that Time Zone and nanosecond portions are dropped
Set date = OraTimeStampTZ.ToDate


ToOraNumber(OraIntervalDS)メソッド

適用対象

OraIntervalDSオブジェクト

説明

OraIntervalDSオブジェクトが指定する日数の合計を表す値を含むOraNumberオブジェクトを戻します。

使用方法

Set OraNumberObj = OraIntervalDSObj.ToOraNumber


ToOraTimeStampメソッド

適用対象

OraTimeStampTZオブジェクト

説明

現行のOraTimeStampTZオブジェクトの指定したタイムゾーンの日時値を持つOraTimeStampオブジェクトのコピーを戻します。

OraTimeStampTZオブジェクトからOraTimeStampオブジェクトのコピーを戻します。

使用方法

Set OraTimeStampObj = OraTimeStampTZObj.ToOraTimeStamp

備考

現行のOraTimeStampTZオブジェクトの指定したタイムゾーンの日時値を持つ新規OraTimeStampオブジェクトを戻します。

Dim OraTimeStampTZ As OraTimeStampTZ

...
'Create OraTimeStampTZ using a string
Set OraTimeStampTZ = OraSession.CreateOraTimeStampTZ("2000-12-28" & _
       "12:10:23.444 -07:00", "YYYY-MM-DD HH:MI:SS.FF TZH:TZM")

'returns a new OraTimeStamp object with date value equal to
' "2000-12-28 12:10:23.444"
'note that Time Zone portion is dropped
Set OraTimeStamp = OraTimeStampTZ.ToOraTimeStamp


ToOraTimeStampLTZメソッド

適用対象

OraTimeStampTZオブジェクト

説明

現行のOraTimeStampTZオブジェクトのセッション・タイムゾーンに正規化された日時値を持つOraTimeStampオブジェクトのコピーを戻します。

使用方法

Set OraTimeStampObj = OraTimeStampTZObj.ToOraTimeStampLTZ

備考

現行のOraTimeStampTZオブジェクトのセッション・タイムゾーンに正規化された日時値を持つ新規OraTimeStampオブジェクトを戻します。

Dim OraTimeStampTZ As OraTimeStampTZ

...
'Create OraTimeStampTZ using a string
Set OraTimeStampTZ = OraSession.CreateOraTimeStampTZ("2003-APR-29" & _
        "12:00:00 -07:00", "YYYY-MON-DD HH:MI:SS TZH:TZM")

'Assuming that the Session Time Zone is "-08:00"
'returns a new OraTimeStamp object with date value normalized to
'session Time Zone, "2003-APR-29 11:00:00"

Set OraTimeStamp = OraTimeStampTZ.ToOraTimeStampLTZ
...


ToOraTimeStampTZメソッド

適用対象

OraTimeStampオブジェクト

説明

OraTimeStampオブジェクトからOraTimeStampTZオブジェクトのコピーを戻します。

使用方法

Set OraTimeStampTZObj = OraTimeStampObj.ToOraTimeStampTZ

備考

現行のOraTimeStampオブジェクトと同じ日時値の新規OraTimeStampTZオブジェクトを戻します。 戻されたOraTimeStampTZオブジェクトのタイムゾーン情報は、セッション・タイムゾーンに設定されます。

Dim OraTimeStamp As OraTimeStamp

...
'Create OraTimeStamp using a string
Set OraTimeStamp = OraSession.CreateOraTimeStamp("1999-APR-29" & _
         "12:10:23.444 AM", "YYYY-MON-DD HH:MI:SS.FF AM")

' assuming that the session Time Zone is "-07:00" returns a new
' OraTimeStampTZ object with date value equal to "1999-APR-29 12:10:23 -07:00"
Set OraTimeStampTZ = OraTimeStamp.ToOraTimeStampTZ


ToUniversalTimeメソッド

適用対象

OraTimeStampTZオブジェクト

説明

現行のOraTimeStampTZオブジェクトの協定世界時(UTC)に正規化された日時値を持つOraTimeStampTZオブジェクトのコピーを戻します。

使用方法

Set OraTimeStampTZObj1 = OraTimeStampTZObj.ToUniversalTime

備考

現行のOraTimeStampTZオブジェクトのUTCに正規化された日時値を持つ新規OraTimeStampTZオブジェクトを戻します。


注意:

UTCは以前グリニッジ標準時と呼ばれていました。

Dim OraTimeStampTZ As OraTimeStampTZ
Dim OraTimeStampTZ_UTC As OraTimeStampTZ
...
'Create OraTimeStampTZ using a string
Set OraTimeStampTZ = OraSession.CreateOraTimeStampTZ("2003-APR-29 " & _
        "12:00:00 -07:00", "YYYY-MON-DD HH:MI:SS TZH:TZM")

'returns a new OraTimeStampTZ object with date value normalized to
'UTC time, "2003-APR-29 19:00:00 00:00"
Set OraTimeStampTZ_UTC = OraTimeStampTZ.ToUniversalTime
...


Trim(OraCollection)メソッド

適用対象

OraCollectionオブジェクト

説明

コレクションの最後から指定した数の要素を切り捨てます。

使用方法

OraCollection.Trim size

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] size 切り捨てる要素の数を指定する整数。

備考

コレクションの最後から要素を削除します。 現在のコレクションのサイズを超えるサイズを指定すると、エラーになります。

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

例: OraCollectionオブジェクトに対するTrimメソッド

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

'display the size of the collection
msgbox  EnameList.Size

'Trim the EnameList collection by one. Before that row level
 'lock should be obtained

OraDynaset.Edit
EnameList.Trim 1
OraDynaset.Update

'display the new size of the collection
msgbox EnameList.Size


Trim(OraLOB)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

説明

LOBの値を短く切り捨てます。

使用方法

OraBlob.Trim NewLen
OraClob.Trim NewLen

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] NewLen 現在の長さ以下である必要がある、LOBの新しい長さを指定する整数。

備考

このメソッドのコール前に、行レベルまたはオブジェクト・レベルでロックを取得する必要があります。


注意:

WriteCopyFromFileなど、LOBのメソッドを使用したLOBの操作では、古いデータと比較して新しいデータが短い場合、LOBオブジェクトは自動的に切り捨てられません。 LOBオブジェクトを新しいデータのサイズに縮小するには、Trim(OraLOB)メソッドを使用します。


Trunc(OraNumber)メソッド

適用対象

OraNumberオブジェクト

説明

OraNumberを指定された小数位で切り捨てます。

使用方法

OraNumber.Trunc decplaces

引数

このメソッドの引数は、次のとおりです。

引数 説明
[in] decplaces 小数点から右の桁数を指定して切捨て位置を示す整数。 負の値も指定可能で、小数点から左の桁数を示します。

備考

この操作の結果は、OraNumberオブジェクトに格納されます。 戻り値はありません。


Unregisterメソッド

適用対象

OraSubscriptionオブジェクト

説明

このサブスクリプションの登録を解除し、特定のデータベース・イベントに関する通知をオフにします。

使用方法

orasubscription.UnRegister

備考

サブスクリプションの登録を解除すると、今後そのサブスクリプションまたはデータベース・イベントに関連する通知は送信されなくなります。 通知を再開するには、そのサブスクリプションを再登録します。

データベース・イベントが通知されるようにアプリケーションを登録する例

「例: データベース・イベントが通知されるようにアプリケーションを登録する方法」を参照してください。


Updateメソッド

適用対象

OraDynasetオブジェクト

説明

指定したダイナセットにコピー・バッファを保存します。

使用方法

oradynaset.Update
oradynaset.DbUpdate

備考

Updateメソッドは、AddNewまたはEdit操作を完了して、そのセッションでBeginTrans操作が保留されていないかぎり、ただちに変更内容をデータベースにコミットします。

グローバル・トランザクション(つまり、BeginTrans操作が発行済)内のダイナセットの所定の行でUpdateメソッドをコールすると、CommitTransまたはRollbackメソッドをコールするまで、選択した行がロックされたままになります。

ミラー化されたデータ・イメージも更新されるため、データの参照および更新を続行するために問合せを再評価する必要はありません。 ミラー・イメージの更新に使用するメソッドは、このダイナセットのOraDatabaseオブジェクトを作成したOpenDatabaseメソッドに渡されたオプション・フラグによって決まります。

このダイナセットがデータ・コントロールに付加されている場合、データ・コントロール・コードのValidateイベントで、必要に応じて、更新要求を取り消すことができます。 更新が完了すると、ダイナセットに関連付けられているすべてのバインド済コントロールに更新内容が通知されるため、データの変更内容が自動的に反映されます。

この例では、AddNewおよびUpdateメソッドを使用して、ダイナセットに新規レコードを追加する方法を示します。 このコードをコピーして、フォームの定義セクションに貼り付けてください。 次に[F5]を押します。

Sub Form_Load ()

'Declare variables
 Dim OraSession As OraSession
 Dim OraDatabase As OraDatabase
 Dim OraDynaset 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 the OraDynaset Object.
Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)

'Begin an AddNew.
OraDynaset.AddNew

'Set the field(column) values.
OraDynaset.Fields("EMPNO").Value = "1000"
OraDynaset.Fields("ENAME").Value = "WILSON"
OraDynaset.Fields("JOB").Value = "SALESMAN"
OraDynaset.Fields("MGR").Value = "7698"
OraDynaset.Fields("HIREDATE").Value = "19-SEP-92"
OraDynaset.Fields("SAL").Value = 2000
OraDynaset.Fields("COMM").Value = 500

OraDynaset.Fields("DEPTNO").Value = 30

'End the AddNew and Update the dynaset.
OraDynaset.Update

End Sub


Update(OraRef)メソッド

適用対象

OraRefオブジェクト

説明

変更した参照可能オブジェクトをデータベースにフラッシュします。

使用方法

OraRef.Update

備考

Updateメソッドは、Edit操作を完了し、セッションにBeginTrans操作が保留されていないかぎりは、変更内容をデータベースにコミットします。

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

属性値の更新: ダイナセットの例

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

'locks the Person object in the server for modifying its attributes
Person.Edit
  Person.Name = "Eric"
  Person.Age = 35

'Update method flushes the modified referenceable object in the server
Person.Update

属性値の更新: パラメータの例

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

'create an  OraParameter object represent Address object bind Variable
OraDatabase.Parameters.Add "PERSON", Null, ORAPARM_OUTPUT, ORATYPE_REF,"PERSON"

'execute the sql statement which selects person from the customers table
OraDatabase.ExecuteSQL ("BEGIN select aperson into :PERSON from customers" & _
                  "where account = 10; END;")

'get the Person object from OraParameter
set Person = OraDatabase.Parameters("PERSON").Value

'locks the Person object in the server for modifying its attributes
Person.Edit
  Person.Name = "Eric"
  Person.Age = 35

'Update method flushes the modified referenceable object in the server
Person.Update


Write(OraLOB)メソッド

適用対象

OraBLOB、OraCLOBオブジェクト

説明

バッファをこのオブジェクトのBLOBまたはCLOB値に書き込み、書込みデータ長の合計を戻します。

使用方法

amount_written = OraBlob.Write buffer, chunksize, piece
amount_written = OraClob.Write buffer, chunksize, piece

引数

このメソッドの引数は、次のとおりです。

引数 説明
in] buffer OraCLOBオブジェクトの場合は文字配列、ピースの書込み元のOraBLOBオブジェクトの場合はバイト配列。
[in] [オプション] chunksize バッファの長さを指定するための整数。OraCLOBオブジェクトの場合は文字数、OraBLOBまたはOraBFILEオブジェクトの場合はバイト数を示します。 デフォルト値は、バッファの引数のサイズです。
[in] [オプション] piece バッファを書き込むピースを指定するための整数。次の値を指定できます。
  • ORALOB_ONE_PIECE: バッファを単一ピースで書き込みます。 これがデフォルトになります。

  • ORALOB_FIRST_PIECE: バッファは、書き込まれるLOBデータの最初のピースを表します。

  • ORALOB_NEXT_PIECE: バッファは、書き込まれるLOBデータの次のピースを表します。

  • ORALOB_LAST_PIECE: バッファは、書き込まれるLOBデータの最後のピースを表します。

[out] amount_written 書込み量を表す整数。OraCLOBオブジェクトの場合は文字数、OraBLOBまたはOraBFILEオブジェクトの場合はバイト数を示します。

備考

Writeメソッドのコール前に、行レベルまたはオブジェクト・レベルでロックを取得する必要があります。 このメソッドは、Offsetプロパティで指定されたオフセットからBLOBデータまたはCLOBデータを書き込みます。 複数ピースの書込み操作の場合は、PollingAmountプロパティを書込みデータ長の合計数の値に設定し、Statusプロパティをチェックして各ピースの操作が正常に実行されたことを確認する必要があります。 合計数がわからない場合は、PollingAmountプロパティを0に設定できます。ピースの型がOraLob_pieceでないかぎり、ポーリングが発生します。

最後のピースの場合は、ピースの引数をORALOB_LAST_PIECEに設定します。 ポーリング量はバイト数または文字数で記述する必要があります。 PollingAmountプロパティが0(ゼロ)でない場合は、Write操作を早期終了できません。

OraLOBのPollingamount0で、OraLOBのWriteのピースの型がORALOB_ONE_PIECEでない場合は、ポーリングが引き続き発生します。 ORALOB_LAST_PIECEWriteメソッドへのコールの引数として送信されると、ポーリングが完了します。 これは、OraCLOB.Writeメソッドを可変長キャラクタ・セットでコールする際、文字の合計数を事前にカウントすると負荷がかかる場合に便利です。


注意:

WriteCopyFromFileなど、LOBのメソッドを使用したLOBの操作では、古いデータと比較して新しいデータが短い場合、LOBオブジェクトは自動的に切り捨てられません。 LOBオブジェクトを新しいデータのサイズに縮小するには、Trim(OraLOB)メソッドを使用します。

「LOBデータ型の例で使用されているスキーマ・オブジェクト」の説明に従ってOraLOBスキーマ・オブジェクトをインストールしていることを確認してください。

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

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
Dim PartDesc As OraClob
Dim buffer As String
Dim chunksize As Long
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 the OraDynaset Object
Set OraDynaset = OraDatabase.CreateDynaset("select * from part", 0&)
Set PartDesc = OraDynaset.Fields("part_desc").Value
chunksize = 32000

'Re adjust the buffer size
buffer = String$(chunksize, 32)
FNum = FreeFile

'Open the file.
Open "partdesc.dat" For Binary As #FNum

'set the offset and PollingAmount properties for piece wise
'Write operation
PartDesc.offset = 1
PartDesc.PollingAmount = LOF(FNum)
remainder = LOF(FNum)

'Lock the row for write operation
OraDynaset.Edit
Get #FNum, , buffer

'Do first write operation
amount_written = PartDesc.Write(buffer, chunksize, ORALOB_FIRST_PIECE)

While PartDesc.Status = ORALOB_NEED_DATA
  remainder = remainder - chunksize
  If remainder < chunksize Then
    piecetype = ORALOB_LAST_PIECE
    chunksize = remainder
   Else
    piecetype = ORALOB_NEXT_PIECE
  End If
  Get #FNum, , buffer

  amount_written = PartDesc.Write(buffer, chunksize, piecetype)
Wend

Close FNum

'call Update method to commit the transaction
OraDynaset.Update

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

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim PartImage As OraBlob
Dim buffer() As Byte

'Create the OraSession Object.
Set OraSession = CreateObject("OracleInProcServer.XOraSession")

'Create the OraDatabase Object.
Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)

'Add PartDesc as an Output parameter and set its initial value.
OraDatabase.Parameters.Add "PartImage", Null, ORAPARM_OUTPUT
OraDatabase.Parameters("PartImage").ServerType = ORATYPE_BLOB

'Begin the transaction
OraSession.BeginTrans

'Execute the statement returning 'PartDesc'
OraDatabase.ExecuteSQL ("BEGIN select part_image into :PARTIMAGE" & _
            "from part where part_id = 1 for update NOWAIT; END;")

'Get 'PartDesc' from Parameters collection
Set PartImage = OraDatabase.Parameters("PartImage").Value

'Get a free file number
FNum = FreeFile

'Open the file.
Open "PartImage.Dat" For Binary As #FNum

'Re adjust the buffer size to hold entire file data
ReDim buffer(LOF(FNum))
Get #FNum, , buffer

'Do one write operation
amount_written = PartImage.Write(buffer)

Close FNum
MsgBox "Amount written to the LOB data is " & amount_written

'Ends the transaction
OraSession.CommitTrans