Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Meluluskan Senarai Rentetan kepada Prosedur Tersimpan Pelayan SQL Menggunakan Jenis Jadual Ditakrifkan Pengguna?

Bagaimana untuk Meluluskan Senarai Rentetan kepada Prosedur Tersimpan Pelayan SQL Menggunakan Jenis Jadual Ditakrifkan Pengguna?

Barbara Streisand
Lepaskan: 2025-01-13 10:02:42
asal
131 orang telah melayarinya

How to Pass a List of Strings to a SQL Server Stored Procedure Using a User-Defined Table Type?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan