Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Lulus Senarai Rentetan C# ke Klausa IN Prosedur Tersimpan SQL Server?
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!