Mengirimkan senarai rentetan kepada prosedur tersimpan SQL Server menggunakan jenis jadual yang ditentukan pengguna
Apabila memanggil prosedur tersimpan SQL Server daripada C#, anda mungkin perlu menghantar senarai rentetan sebagai parameter. Walaupun parameter standard mencukupi untuk mengendalikan jenis data mudah, untuk struktur data yang kompleks seperti senarai, pendekatan yang lebih canggih diperlukan.
Untuk lulus senarai rentetan, kami boleh memanfaatkan ciri Jenis Jadual Ditakrifkan Pengguna (UDTT) SQL Server. Ciri ini membolehkan kami membuat jenis data tersuai yang menyerupai jadual untuk menyimpan koleksi data.
Buat jenis jadual yang ditentukan pengguna
Pertama, kita perlu mencipta Jenis Jadual Ditakrifkan Pengguna (UDTT):
<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );</code>
UDTT ini mentakrifkan satu lajur bernama "Item" untuk menahan rentetan.
Ubah suai prosedur tersimpan
Seterusnya, kami mengubah suai prosedur yang disimpan untuk menerima parameter UDTT:
<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- 只返回我们传入的项目 SELECT l.Item FROM @list l; END</code>
Mengisi UDTT dalam C#
Dalam C# kami menggunakan DataTable untuk mengisi UDTT:
<code class="language-csharp">using (var table = new DataTable()) { table.Columns.Add("Item", typeof(string)); // ...此处添加循环填充字符串列表到DataTable的代码... SqlParameter pList = new SqlParameter("@list", SqlDbType.Structured); pList.Value = table; }</code>
Lepaskan parameter UDTT kepada prosedur yang disimpan
Akhir sekali, kami menghantar parameter UDTT kepada prosedur yang disimpan:
<code class="language-csharp">using (var cmd = new SqlCommand("exec sp_UseStringList @list", con)) { cmd.Parameters.Add(pList); using (var dr = cmd.ExecuteReader()) { while (dr.Read()) Console.WriteLine(dr["Item"].ToString()); } }</code>
Pendekatan ini membolehkan kami menghantar senarai rentetan dengan cekap kepada prosedur tersimpan SQL Server.
Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Senarai Rentetan kepada Prosedur Tersimpan Pelayan SQL Menggunakan Jenis Jadual Ditakrifkan Pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!