備考
このメソッドをコールすると、指定したセッションまたは接続を共有するすべての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