表: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
... ...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
基本上已经证实是managed ODP.NET 的bug, 期待正式版吧..谢谢你哈, 结贴了.