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

カーソルを返すOracleストアドプロシージャでのDapperの使用

    ここで解決策をありがとう。単純な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. node-1つのクエリでのmysqlの複数のステートメント

    2. byteaとして取得されたPostgreSQLJDBCNull文字列

    3. MySQLですべてのストアドプロシージャを一覧表示する2つの方法

    4. より多くのSQL、より少ないコード、PostgreSQLを使用