sql >> Databasteknik >  >> RDS >> Oracle

Kod för att anropa en funktion i ett paket från C# och ODP.NET

Detta är min första fråga på detta forum och jag skriver gärna till mitt eget svar.

Vi kan anropa en oracle-paketfunktion med ODP.NET genom att ställa in CommandType.StoredProcedure .

ORA-06550: line 1, column 7:
PLS-00221: 'INSERT_FUNC' is not a procedure or is undefined
ORA-06550: line 1, column 7: PL/SQL: Statement ignored

Om du får det här felet, lägg bara till den här raden som den första parametern på kommandoobjektet:

cmd.Parameters.Add("Return_Value", OracleDbType.Int16,
    ParameterDirection.ReturnValue);

Här är arbetskoden:

using (var conn = new OracleConnection(oradb))
using (var cmd = conn.CreateCommand())
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "PKG_NAME.INSERT_FUNC";

    cmd.BindByName = true;

    cmd.Parameters.Add("Return_Value", OracleDbType.Int16,
        ParameterDirection.ReturnValue);
    cmd.Parameters.Add("i_description", OracleDbType.Varchar2, 1000,
        promotionEventSetupDetails.PromotionDescription,
        ParameterDirection.Input);
    cmd.Parameters.Add("i_theme", OracleDbType.Varchar2, 80,
        promotionEventSetupDetails.PromotionTheme,
        ParameterDirection.Input);
    cmd.Parameters.Add("o_id", OracleDbType.Varchar2,
        ParameterDirection.Output);
    cmd.Parameters.Add("o_error_msg", OracleDbType.Varchar2,
        ParameterDirection.Output);

    conn.Open();
    using (var dr = cmd.ExecuteReader())
    {
        // do some work here
    }
}


  1. Vad är skillnaden mellan backtick och hakparentes i SQL-satser?

  2. Hur man returnerar ett inkrementellt gruppnummer per grupp i SQL

  3. dålig Hibernate välj prestanda jämfört med körning direkt - hur felsöka?

  4. Hur man kör Opatch i icke interaktiv form