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>
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>
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>
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!