sql >> Database >  >> RDS >> Sqlserver

Dapper.NET en opgeslagen proces met meerdere resultatensets

QueryMultiple ondersteunt het vermogen om met meerdere resultaatsets om te gaan. De enige ontwerpbeperking die we hebben toegevoegd, was het volledig uitschakelen van buffering voor de rasterlezer. Dit betekent dat de hele API streamt .

In het eenvoudigste geval kunt u gebruiken:

var grid = connection.QueryMultiple("select 1 select 2");
grid.Read<int>().First().IsEqualTo(1);
grid.Read<int>().First().IsEqualTo(2);

In het iets geavanceerdere geval kun je gekke dingen als deze doen:

var p = new DynamicParameters();
p.Add("a", 11);
p.Add("r", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

connection.Execute(@"create proc #spEcho
@a int
as 
begin

select @a Id, 'ping' Name, 1 Id, 'pong1' Name
select @a Id, 'ping' Name, 2 Id, 'pong2' Name
return @a
end");

var grid = connection.QueryMultiple("#spEcho", p, 
                                     commandType: CommandType.StoredProcedure);

var result1 = grid.Read<dynamic, dynamic, Tuple<dynamic, dynamic>>(
                  (a, b) => Tuple.Create((object)a, (object)b)).ToList();
var result2 = grid.Read<dynamic, dynamic, Tuple<dynamic, dynamic>>(
                  (a, b) => Tuple.Create((object)a, (object)b)).ToList();

((int)(result1[0].Item1.Id)).IsEqualTo(11);
((int)(result1[0].Item2.Id)).IsEqualTo(1);

((int)(result2[0].Item1.Id)).IsEqualTo(11);
((int)(result2[0].Item2.Id)).IsEqualTo(2);

p.Get<int>("r").IsEqualTo(11);

U moet dit met behulp van de instructie toevoegen om QueryMultiple in te schakelen.

using Dapper; /* to add extended method QueryMultiple public static GridReader QueryMultiple(this IDbConnection cnn, string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null); */


  1. PostgreSQL-query om per dag te tellen/groeperen en dagen zonder gegevens weer te geven

  2. Controleer of de MySQL-tabel bestaat zonder de syntaxis select from te gebruiken?

  3. Retourrij met de maximale waarde van één kolom per groep

  4. Rij naar kolom transformatie in MySQL