1

Oracle.DataAccess ライブラリを使用して Oracle データベースに接続する C# で開発された .NET プロセスが 1 つあります。私のプロセスはいくつかの大規模な更新を行い、その後、Oracle でストアド プロシージャを呼び出して何らかの処理を行う必要があります。この手順が完了するまでに 1.5 時間かかりました (この手順に関連付けられたコントロール テーブルがあるため、完了したことがわかります) が、C# コードはデバッグ中に同じ行に残ります... 何らかのタイムアウトになる可能性がありますか? 昨日プロセスを実行したままにして、今日到着したとき、プロセスはまだ実行されており(14時間)、ストアドプロシージャは1.5時間で終了しました...)。

これを制御する方法はありますか?

プロシージャを呼び出すメソッド:

public bool PostCurrentJob()
    {
        Logger.Log.Debug(Logger.Direction.INPUT);

        string jobName = ActiveJob;
        bool result = true;
        if (jobName == null)
        {
            result = false;
        }
        else
        {
            OracleCommand cmd = dbManager.GetOracleCommand("genesis_admin_pkg.post");
            cmd.CommandType = CommandType.StoredProcedure;

            try
            {
                OracleParameter pJobName = new OracleParameter("p_Name", OracleDbType.Varchar2, ParameterDirection.Input);
                pJobName.Value = jobName;
                cmd.Parameters.Add(pJobName);

                cmd.ExecuteNonQuery();
                cmd.Dispose();
            }
            catch (Exception e)
            {
                Logger.Log.Error(e);
                throw e;
            }
        }
        Logger.Log.Debug(Logger.Direction.OUTPUT);
        return result;
    }

コードの実行は cmd.ExecuteNonQuery(); で停止します。

ありがとう!

4

0 に答える 0