sql >> Database >  >> RDS >> Oracle

Fout bij ophalen uit de volgorde die tabel retourneert van Oracle-functie in C # waarbij functie dblink naar SQL Server gebruikt

Na meer dan een dag te hebben besteed aan het onderzoeken hiervan, werd ik slechts 10 minuten na het plaatsen van mijn vraag naar het antwoord geleid. Typisch!

Het antwoord is hier gevonden - https://community.oracle.com/thread/659625 - en het enige dat nodig is, is de oproepcode in een transactie te verpakken. Werkcode ziet er als volgt uit:

using (var connection = new OracleConnection(connstring))
{
    connection.Open();

    using (var command = connection.CreateCommand())
    {
        // Start a local transaction
        using (var transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted))
        {
            // Assign transaction object for a pending local transaction
            command.Transaction = transaction;
            command.CommandText = "FNC_AXA_APPTS";
            command.CommandType = CommandType.StoredProcedure;

            OracleParameter retVal = new OracleParameter("PRS", OracleDbType.RefCursor);
            retVal.Direction = ParameterDirection.ReturnValue;
            command.Parameters.Add(retVal);

            command.Parameters.Add(new OracleParameter("EG_PARAM", OracleDbType.Varchar2, 50)).Value = paramValue;

            command.ExecuteNonQuery();

            using (OracleDataReader reader = ((OracleRefCursor)command.Parameters["PRS"].Value).GetDataReader())
            {
                dt.Load(reader);
            }
        }
    }
}

Mijn beperkte begrip van de oplossing is dat zonder dit een transactie wordt gepleegd aan het einde van de SQL Server, waardoor de geretourneerde cursor faalt in zijn iteratie zodra deze is doorgegeven aan de .NET-code. Als iemand een betere uitleg heeft, voeg deze vraag dan toe.



  1. Een tijdstempel in Oracle invoegen in een specifiek formaat

  2. PHP gebruikt regex om mysql te herhalen en op te vragen om een ​​Excel-bestand uit te voeren

  3. Ongewenste nieuwe regels bij het spoolen van een sqlplus-resultaat naar een xml-bestand

  4. Hoe verwijder ik een vast aantal rijen met sorteren in PostgreSQL?