Heim > Datenbank > MySQL-Tutorial > Wie können Arrays mithilfe von Tabellenwertparametern (TVPs) effizient an gespeicherte Prozeduren übergeben werden?

Wie können Arrays mithilfe von Tabellenwertparametern (TVPs) effizient an gespeicherte Prozeduren übergeben werden?

Linda Hamilton
Freigeben: 2025-01-10 17:23:43
Original
824 Leute haben es durchsucht

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

Verwendung von Tabellenwertparametern (TVPs) zur Übergabe von Arrays an gespeicherte Prozeduren

Datenbankanwendungen erfordern häufig die Übergabe von Arrays oder Wertelisten an gespeicherte Prozeduren. Für SQL Server 2008 und höher bieten Table-Valued Parameters (TVPs) die effizienteste Lösung.

Erstellen einer gespeicherten Prozedur mit einem TVP

Dazu gehört zunächst die Definition des TVP-Typs und dann die Erstellung der gespeicherten Prozedur:

<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>
Nach dem Login kopieren

Aufrufen der gespeicherten Prozedur

Bereiten Sie in Ihrer Anwendung (Beispiel mit C#) die Daten als DataTable vor, stellen Sie die Datenbankverbindung her und erstellen Sie das Befehlsobjekt:

<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>
Nach dem Login kopieren

Führen Sie abschließend die gespeicherte Prozedur aus und verarbeiten Sie die Ergebnisse:

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

while (sqlDataReader.Read())
{
    Console.WriteLine("Matching t1ID: {0}", sqlDataReader["t1Id"]);
}</code>
Nach dem Login kopieren

TVPs bieten eine typsichere und effiziente Methode zum Übergeben von Arrays oder Listen an gespeicherte Prozeduren und verbessern so die Leistung und Wartbarkeit von Datenbankanwendungen.

Das obige ist der detaillierte Inhalt vonWie können Arrays mithilfe von Tabellenwertparametern (TVPs) effizient an gespeicherte Prozeduren übergeben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage