表:MANGED_ODP_TEST, 有两个字段: ID, ABC, ID值通过触发器从Sequence中获取,在BEFORE INSERT. 代码如下:using Oracle.ManagedDataAccess.Client;
... ...using (OracleConnection oraConn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS = (PROTOCOL = TCP)(HOST = 10.xxx.xxx.xxx)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = orcl)));User ID=xxx;Password=xxx"))
{
    string cmdText = @"insert into MANGED_ODP_TEST (ABC) values( :abc ) returning id  into :id";    using (OracleCommand cmd1 = new OracleCommand(cmdText, oraConn))
    {
        oraConn.Open();
        try
        {
            OracleParameter prm = new OracleParameter();
            cmd1.Parameters.Clear();
            cmd1.BindByName = true;            prm = new OracleParameter("abc", OracleDbType.Varchar2); prm.Value = Guid.NewGuid().ToString(); cmd1.Parameters.Add(prm);
            prm = new OracleParameter("id", OracleDbType.Varchar2, ParameterDirection.ReturnValue); cmd1.Parameters.Add(prm);            cmd1.ExecuteNonQuery();
        }
        catch
        {
        }
        finally
        {
        }
        oraConn.Close();
    }
}
问题如下:
1.第一次执行, 没任何问题, 第二次执行便会出现网络错误 .
2.去掉returning 没问题.
3.换成unmanaged ODP.NET 没问题.不知道是不是oracle managed odp.net 的bug, 还是程序代码有问题....请高手赐教..
在这里有人问过类似的问题,但没人回复: https://cn.forums.oracle.com/forums/thread.jspa?threadID=2472290&tstart=90