Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyalurkan Tatasusunan ke Prosedur Tersimpan dengan Cekap Menggunakan Parameter Bernilai Jadual (TVP)?

Bagaimana untuk Menyalurkan Tatasusunan ke Prosedur Tersimpan dengan Cekap Menggunakan Parameter Bernilai Jadual (TVP)?

Linda Hamilton
Lepaskan: 2025-01-10 17:23:43
asal
825 orang telah melayarinya

Efficiently Passing Arrays to Stored Procedures Using Table-Valued Parameters (TVPs)

Menggunakan Parameter Bernilai Jadual (TVP) untuk Menghantar Tatasusunan kepada Prosedur Tersimpan

Aplikasi pangkalan data kerap memerlukan menghantar tatasusunan atau senarai nilai kepada prosedur yang disimpan. Untuk SQL Server 2008 dan yang lebih baru, Table-Valued Parameters (TVPs) menawarkan penyelesaian yang paling cekap.

Mencipta Prosedur Tersimpan dengan TVP

Ini melibatkan penentuan jenis TVP dahulu, kemudian mencipta prosedur tersimpan:

<code class="language-sql">CREATE TYPE T1Ids AS Table (
    t1Id INT
);

CREATE PROCEDURE dbo.FindMatchingRowsInTable1 (@Table1Ids AS T1Ids READONLY)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT Table1.t1Id 
    FROM dbo.Table1 AS Table1
    JOIN @Table1Ids AS paramTable1Ids ON Table1.t1Id = paramTable1Ids.t1Id;
END</code>
Salin selepas log masuk

Memanggil Prosedur Tersimpan

Dalam aplikasi anda (contoh menggunakan C#), sediakan data sebagai Jadual Data, wujudkan sambungan pangkalan data dan cipta objek arahan:

<code class="language-csharp">DataTable t1Ids = new DataTable();
t1Ids.Columns.Add("t1Id", typeof(int));

int[] listOfIdsToFind = new[] { 1, 5, 9 };
foreach (int id in listOfIdsToFind)
{
    t1Ids.Rows.Add(id);
}

SqlConnection testbedConnection = new SqlConnection(
    @"Data Source=.\SQLExpress;Initial Catalog=TestbedDb;Persist Security Info=True;User ID=testbedUser;Password=letmein12;Connect Timeout=5");

SqlCommand findMatchingRowsInTable1 = new SqlCommand("dbo.FindMatchingRowsInTable1", testbedConnection);
findMatchingRowsInTable1.CommandType = CommandType.StoredProcedure;

SqlParameter sqlParameter = new SqlParameter("Table1Ids", t1Ids);
findMatchingRowsInTable1.Parameters.Add(sqlParameter);</code>
Salin selepas log masuk

Akhir sekali, laksanakan prosedur tersimpan dan kendalikan keputusan:

<code class="language-csharp">SqlDataReader sqlDataReader = findMatchingRowsInTable1.ExecuteReader();

while (sqlDataReader.Read())
{
    Console.WriteLine("Matching t1ID: {0}", sqlDataReader["t1Id"]);
}</code>
Salin selepas log masuk

TVP menawarkan kaedah selamat jenis dan cekap untuk menghantar tatasusunan atau senarai ke prosedur yang disimpan, meningkatkan prestasi aplikasi pangkalan data dan kebolehselenggaraan.

Atas ialah kandungan terperinci Bagaimana untuk Menyalurkan Tatasusunan ke Prosedur Tersimpan dengan Cekap Menggunakan Parameter Bernilai Jadual (TVP)?. 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