完了したら閉じる必要があるデータベース リンクを使用するコードがいくつかあります。電話をかけ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();
}