Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Używanie Dappera z procedurami składowanymi Oracle, które zwracają kursory

Dzięki za rozwiązanie tutaj. Osiągnąłem to samo przy nieco mniejszej ilości kodu, używając prostego dekoratora DynamicParameter:

public class OracleDynamicParameters : SqlMapper.IDynamicParameters
{
    private readonly DynamicParameters dynamicParameters = new DynamicParameters();

    private readonly List<OracleParameter> oracleParameters = new List<OracleParameter>();

    public void Add(string name, object value = null, DbType? dbType = null, ParameterDirection? direction = null, int? size = null)
    {
        dynamicParameters.Add(name, value, dbType, direction, size);
    }

    public void Add(string name, OracleDbType oracleDbType, ParameterDirection direction)
    {
        var oracleParameter = new OracleParameter(name, oracleDbType, direction);
        oracleParameters.Add(oracleParameter);
    }

    public void AddParameters(IDbCommand command, SqlMapper.Identity identity)
    {
        ((SqlMapper.IDynamicParameters)dynamicParameters).AddParameters(command, identity);

        var oracleCommand = command as OracleCommand;

        if (oracleCommand != null)
        {
            oracleCommand.Parameters.AddRange(oracleParameters.ToArray());
        }
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak połączyć wiele wierszy w jeden w Oracle bez tworzenia procedury składowanej?

  2. Należy zadeklarować identyfikator PLS-00201 'PACKAGENAME.PROCEDURENAME'

  3. Jak sprawdzić, czy plik istnieje w PL/SQL?

  4. (Angielski) Jak używać Oracle Database 19c Pre-Built Developer VM?

  5. Czy sprzężenie wewnętrzne jest tym samym, co equi-join?