1

Oracle 10g で vb.net 2005 を使用してアプリケーションを実装していますが、Oracle の 3 つの異なるテーブルからデータを選択/挿入/更新/削除する機能に出会いました。

そのため、3 つのコマンド (SQL ステートメント) をすべて個別に準備し、オラクルに対して一発で実行する方法があるかどうか疑問に思っているので、このようにして、それらすべてが正常に実行されるか、すべて失敗するかを保証できます。また、私の場合は重要なパフォーマンスを向上させることができました。

したがって、vb.net で、オラクルに対して複数の OracleCommand を一度に実行するのに役立つ構文を探しています。

4

1 に答える 1

1

これは疑似コードで答えることができます

Dim cnn as OracleConnection
Dim tr as OracleTransaction 
Try
    cnn = new OracleConnection("your_connection_string")
    cnn.Open()
    tr = cnn.BeginTransaction(IsolationLevel.ReadCommitted)

    Dim cmd1 as OracleCommand = con.CreateCommand();
    Dim cmd2 as OracleCommand = con.CreateCommand();
    Dim cmd3 as OracleCommand = con.CreateCommand();

    cmd1.CommandText = "Your_Query_Text1"
    cmd2.CommandText = "Your_Query_Text2"
    cmd3.CommandText = "Your_Query_Text3"    

    cmd1.ExecuteNonQuery()
    cmd2.ExecuteNonQuery()
    cmd3.ExecuteNonQuery()

    tr.Commit()
    cnn.Close()
    cnn = Nothing
    tr = Nothing
Catch
   if tr <> Nothing then
       tr.Rollback()
   End if 
   If cnn <> Nothing Then 
       cnn.Close()
   End If
   cnn = Nothing
   tr = Nothing
End Try

トランザクションは、データベースに一連のアクションを 1 つの単位として実行させます。接続の BeginTransaction メソッドを呼び出して、トランザクションの開始をマークします。トランザクション ブロック内の操作は、すべて発生するか、または発生しないことが保証されます。

すべてがうまくいけば、トランザクションを確認し、すべてがテーブルに保持されます。何かが発生してコード フローが中断された場合 (例外)、「ロールバック」を呼び出して、トランザクション内でデータベースに対して行ったすべての操作をキャンセルする必要があります。

于 2012-04-24T09:52:27.307 に答える