ヘッダーをスキップ
Oracle® Objects for OLE開発者ガイド
11gリリース2 (11.2) for Microsoft Windows
B58887-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

BeginTransメソッド

説明

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

使用方法

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