Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Dapper.NET dan proc tersimpan dengan beberapa set hasil

QueryMultiple mendukung kemampuan untuk menangani beberapa set hasil. Satu-satunya batasan desain yang kami tambahkan adalah menonaktifkan buffering untuk pembaca grid. Ini berarti seluruh API streaming .

Dalam kasus paling sederhana Anda dapat menggunakan:

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

Dalam kasus yang sedikit lebih canggih, Anda dapat melakukan hal-hal gila seperti ini:

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);

Anda harus menambahkan pernyataan using ini untuk mengaktifkan QueryMultiple .

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. UNION ALL vs kondisi ATAU dalam permintaan server sql

  2. Mengoptimalkan TempDB:Menghindari Kemacetan dan Masalah Kinerja

  3. Bagaimana Saya Dapat Mendeteksi dan Mengikat Perubahan Antara Nilai Baris dalam Tabel SQL?

  4. Memilih COUNT(*) dengan DISTINCT

  5. Bagaimana cara memanggil prosedur tersimpan dengan argumen menggunakan sqlcmd.exe?