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

Pemfilteran kueri SQL berdasarkan daftar parameter

Dengan asumsi SQL Server 2008 atau yang lebih baru, di SQL Server, buat tipe tabel satu kali:

CREATE TYPE dbo.ColumnBValues AS TABLE
(
  ColumnB INT
);

Kemudian prosedur tersimpan yang mengambil tipe seperti input:

CREATE PROCEDURE dbo.whatever
  @ColumnBValues dbo.ColumnBValues READONLY
AS
BEGIN
  SET NOCOUNT ON;

  SELECT A.* FROM dbo.TableA AS A
    INNER JOIN @ColumnBValues AS c
    ON A.ColumnB = c.ColumnB;
END
GO

Sekarang di C#, buat DataTable dan berikan itu sebagai parameter ke prosedur tersimpan:

DataTable cbv = new DataTable();
cbv.Columns.Add(new DataColumn("ColumnB"));

// in a loop from a collection, presumably:
cbv.Rows.Add(someThing.someValue);

using (connectionObject)
{
    SqlCommand cmd        = new SqlCommand("dbo.whatever", connectionObject);
    cmd.CommandType       = CommandType.StoredProcedure;
    SqlParameter cbvParam = cmd.Parameters.AddWithValue("@ColumnBValues", cbv);
    cbvParam.SqlDbType    = SqlDbType.Structured;
    //cmd.Execute...;
}

(Anda mungkin ingin membuat jenisnya lebih umum, saya menamakannya secara khusus untuk memperjelas apa yang dilakukannya.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mendapatkan Tanggal Saat Ini di SQL Server

  2. Apakah saya benar-benar perlu menggunakan SET XACT_ABORT ON?

  3. Arsitektur SQL Server AlwaysOn (Availability Group) dan Instalasi Langkah demi Langkah -2

  4. Bagaimana saya bisa melakukan sesuatu seperti:GUNAKAN @databaseName

  5. Cara menyalin baris dari satu tabel SQL Server ke yang lain