備考
このメソッドをコールすると、指定したセッションまたは接続を共有するすべてのOraDynasetオブジェクトに対して、ロールバック要求を取り消す機会が与えられます。要求を取り消さない場合は、ロールバックが正常終了した時点でオブジェクトに通知されます。
この機能は、Oracle Data Control操作の一部として作成されるダイナセットに特に便利です。これらのダイナセットに対して、Validateイベントを送信し、ロールバック要求を取り消すことができるようにします。
OraConnectionおよびOraDatabase:
Rollbackメソッドは、指定した接続内で保留中の全トランザクションをロールバックします。トランザクションが開始されていない場合、このメソッドは無効です。セッション全体のトランザクションが進行中の場合は、指定された接続用のトランザクションを早い時点でロールバックするために、このコールを使用できます。
OraSession:
Rollbackメソッドは、指定したセッション内で保留中の全トランザクションをロールバックします。Rollbackメソッドは、トランザクションが開始されている場合のみ有効です。トランザクションが開始されていないときに、Rollbackメソッドを使用するとエラーが発生します。
|
注意: 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