sql >> データベース >  >> RDS >> Oracle

大きなCLOBを使用してC#からストアドプロシージャを呼び出す際の問題

    あることがわかりました 問題を回避する別の方法!同僚の従業員が私の一日を節約して、次のようなブログを紹介してくれました。

    DbConnectionでBeginTransactionがすでに呼び出されている場合は、パラメータ値を設定します。

    もっと簡単でしょうか?ブログはOracle.DataAccessに関連しています 、ただし、System.Data.OracleClientでも同様に機能します 。

    実際には、これは次のことを意味します:

    varcmd = new OracleCommand("LoadXML", _oracleConnection);
    cmd.CommandType = CommandType.StoredProcedure;
    
    var xmlParam = new OracleParameter("XMLFile", OracleType.Clob);
    cmd.Parameters.Add(xmlParam);
    
    // DO NOT assign the parameter value yet in this place
    
    cmd.Transaction = _oracleConnection.BeginTransaction();
    try
    {
        // Assign value here, AFTER starting the TX
        xmlParam.Value = xmlWithWayMoreThan4000Characters;
    
        cmd.ExecuteNonQuery();
        cmd.Transaction.Commit();
    }
    catch (OracleException)
    {
        cmd.Transaction.Rollback();
    }
    


    1. OracleとSQLサーバーを使用したページングと一般的なページング方法

    2. PostgreSQLのデータストアの比較-MVCCとInnoDB

    3. OracleでJDKのバージョンを確認するにはどうすればよいですか?

    4. Oracleのsidとデータベース名を確認しています