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

Lewati Daftar string ke prosedur tersimpan

Ini benar-benar duplikat dari tautan yang Anda posting. Alih-alih mencoba mengurai daftar nilai, berikan parameter bernilai tabel.

Pertama buat tipe parameter di database (hanya sekali).

CREATE TYPE [dbo].[IdList] AS TABLE(
    [Id] int NULL
);

Kemudian buat prosedur yang menerima parameter ini:

CREATE PROCEDURE [dbo].[GetWorkspaceMapDetailsForUserByGroups]
    @workspaceID int,
    @groupIds IdList READONLY
AS
BEGIN
SELECT 
  m.*
FROM GeoAppMapDef m 
    inner join @groupIds on [email protected]
WHERE
    m.workspaceID = @workspaceID
    and m.IsDeleted = 0
END

Di sisi klien, buat DataTable dengan satu kolom bertipe int yang disebut Id , isi dengan ID yang diinginkan kemudian gunakan sebagai nilai @groupIds parameter

var table = new DataTable();
table.Columns.Add("Id", typeof(int));

for (int i = 0; i < 10; i++)
    table.Rows.Add(i);

var pList = new SqlParameter("@groupIds", SqlDbType.Structured);
pList.TypeName = "dbo.IdList";
pList.Value = table;

Saya telah menyalin ini dari pertanyaan duplikat dengan beberapa modifikasi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Temukan nama parameter dari prosedur tersimpan

  2. Cara keluar dari tanda kurung siku di dalam tanda kurung siku untuk nama bidang

  3. Cara terbaik untuk mendapatkan PK Guid dari baris yang disisipkan

  4. Apa itu SQL Server? (Definisi, Versi, Edisi)

  5. Mengubah format tanggal pada DB SQL Server dan bukan di seluruh server menjadi hh/bb/tttt