我有一些代码使用完成后需要关闭的数据库链接。我打电话DBMS_SESSION.Close_database_link
,但它给了我错误,ORA-02080,即使链接不再使用。
当我在 SQL*Plus 中尝试它时,它运行良好并在我运行COMMIT
. 但是在 .Net 中,即使我运行 commit 它也不会关闭。
using (var con = new Oracle.DataAccess.Client.OracleConnection(@"Data Source=firefly8;User Id=USER;Password=PWD;Pooling=false;"))
{
con.Open();
var c = con.CreateCommand();
c.CommandText = "select a from tnoam@link_2";
using (var r = c.ExecuteReader())
{
r.Read();
}
c.Dispose();
var c2 = con.CreateCommand();
c2.CommandText = "begin commit; dbms_session.close_database_link ('link_2');end;";
c2.ExecuteNonQuery();
}
我很坚持这个。请帮忙
根据@Ben 的评论,我尝试了以下方法,但效果不佳:
using (var con = new Oracle.DataAccess.Client.OracleConnection(@"Data Source=firefly8;User Id=MILK_NEW;Password=MILK_NEW;Pooling=false;"))
{
con.Open();
var t = con.BeginTransaction();
var c = con.CreateCommand();
c.Transaction = t;
c.CommandText = "select a from tnoam@link_2";
using (var r = c.ExecuteReader())
{
r.Read();
}
t.Commit();
c.Dispose();
var c2 = con.CreateCommand();
c2.CommandText = "begin commit; dbms_session.close_database_link ('link_2');end;";
c2.ExecuteNonQuery();
}