如何一次对 3 个不同的 Oracle 表执行 3 个命令(SQL 语句)



我正在使用 Oracle 10g vb.net 2005 实现一个应用程序,我遇到了一个功能,它应该从 Oracle 中的三个不同表中选择/插入/更新/删除数据。

所以我想知道是否有办法分别准备所有 3 个命令(SQL 语句),然后一次性将它们执行到 oracle,因此通过这种方式,我可以保证所有命令都成功执行或全部执行失败,而且我可以获得更多的性能,这在我的情况下至关重要。

因此,我正在寻找一种语法 vb.net 可以帮助我在一次向预言机执行多个 OracleCommand 。

这可以用伪代码回答

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

事务使数据库作为一个单元执行一系列操作。标记调用连接的 BeginTransaction 方法的事务的开始。事务块内的操作保证全部发生或全部不发生。

如果一切顺利,则确认事务,所有内容都保留在表中。如果发生某些事情中断了您的代码流(异常),您应该调用"回滚"以取消您在事务内部对数据库所做的一切。

最新更新