Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Lulus Senarai Rentetan C# ke Klausa IN Prosedur Tersimpan SQL Server?

Bagaimana untuk Lulus Senarai Rentetan C# ke Klausa IN Prosedur Tersimpan SQL Server?

Patricia Arquette
Patricia Arquetteasal
2025-01-04 15:55:39469semak imbas

How to Pass a C# String List to an SQL Server Stored Procedure's IN Clause?

Meluluskan Senarai ke SQL Server Stored Procedures daripada C#

Dalam kod C# yang diberikan, prosedur tersimpan sedang digunakan dengan pelbagai nilai parameter, termasuk senarai rentetan. Walau bagaimanapun, pertanyaan dalam prosedur tersimpan memerlukan senarai untuk diluluskan sebagai sebahagian daripada klausa IN.

Penyelesaian: Menggunakan Jenis Jadual Ditakrifkan Pengguna (SQL Server 2008 )

SQL Server 2008 memperkenalkan Jenis Jadual Ditakrifkan Pengguna, ciri yang membenarkan menghantar koleksi data ke prosedur tersimpan dalam struktur berstruktur. cara. Begini cara untuk melaksanakan penyelesaian ini:

1. Cipta Jenis Jadual Ditakrifkan Pengguna

Buat jenis jadual yang sepadan dengan senarai rentetan. Contohnya:

CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);

2. Ubah suai Prosedur Tersimpan

Suaikan prosedur tersimpan untuk menerima jenis jadual sebagai parameter input:

CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- Query using the table type
    SELECT l.Item FROM @list l;
END

3. Isi Jenis Jadual dalam C#

Dalam C#, buat objek DataTable dan isikannya dengan senarai rentetan. Kemudian, tentukan parameter untuk menghantar Jadual Data kepada prosedur yang disimpan.

using (var table = new DataTable())
{
    table.Columns.Add("Item", typeof(string));

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

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

    cmd.Parameters.Add(pList);
}

4. Laksanakan Prosedur Tersimpan

Laksanakan prosedur tersimpan dengan objek SqlParameter yang diisi.

Contoh Penggunaan:

using (var con = new SqlConnection(connstring))
{
    con.Open();

    using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con))
    {
        using (var dr = cmd.ExecuteReader())
        {
            while (dr.Read())
                Console.WriteLine(dr["Item"].ToString());
        }
    }
}

Atas ialah kandungan terperinci Bagaimana untuk Lulus Senarai Rentetan C# ke Klausa IN Prosedur Tersimpan SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn