zoukankan      html  css  js  c++  java
  • ODP.NET调用存储需要使用事务

    今天发生在用ODP.NET调整一个存储过程时发生了两个奇怪的错误。

    1. ORA-08103: object no longer exists 
    2. ora-01410: invalid rowid

    网上都说是索引块有错误什么的,我索引也重建,表也重建了,但还是不行。

    奇怪的是我直接测试存储过程是有结果的。

    后来发现是存储过程中使用了临时表,而我在代码中又没有使用事务,当我加上事务后程序就正常了。 正常的代码像下面这样:

    using (var conn = SqlHelper.GetConnection() as OracleConnection)
                {
                    conn.Open();
                    var trans = conn.BeginTransaction();
    
                    var cmd = conn.CreateCommand();
                    cmd.CommandText = "PKG_LIMIT_RESULT.OVERVIEW_RESULT_LIST";
                    cmd.CommandType = CommandType.StoredProcedure;
    
                    var p1 = new OracleParameter("P_DATA_SET", OracleDbType.RefCursor, ParameterDirection.Output);
                    var p2 = new OracleParameter("P_BEG_DATE", OracleDbType.Varchar2, "2012-10-08", ParameterDirection.Input);
                    var p3 = new OracleParameter("P_END_DATE", OracleDbType.Varchar2, "2012-11-17", ParameterDirection.Input);
                //.....
    
                    cmd.Parameters.Add(p1);
                    cmd.Parameters.Add(p2);
                    cmd.Parameters.Add(p3);
                    //.......
    
                    var reader = cmd.ExecuteReader();
    
                    while (reader.Read())
                    {
                        //Console.WriteLine(reader.GetInt32(0));
                    }
                    reader.Dispose();
                    trans.Commit();
    }

      

  • 相关阅读:
    广域网(ppp协议、HDLC协议)
    0120. Triangle (M)
    0589. N-ary Tree Preorder Traversal (E)
    0377. Combination Sum IV (M)
    1074. Number of Submatrices That Sum to Target (H)
    1209. Remove All Adjacent Duplicates in String II (M)
    0509. Fibonacci Number (E)
    0086. Partition List (M)
    0667. Beautiful Arrangement II (M)
    1302. Deepest Leaves Sum (M)
  • 原文地址:https://www.cnblogs.com/jmax/p/2934994.html
Copyright © 2011-2022 走看看