Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine Liste effizient an eine gespeicherte SQL-Prozedur übergeben?

Wie kann ich eine Liste effizient an eine gespeicherte SQL-Prozedur übergeben?

Barbara Streisand
Freigeben: 2025-01-01 08:36:10
Original
959 Leute haben es durchsucht

How Can I Efficiently Pass a List to a SQL Stored Procedure?

Bestehensliste Effizient in eine gespeicherte SQL-Prozedur umwandeln

Traditionell erforderte die Übergabe mehrerer Elemente an eine gespeicherte SQL-Prozedur eine mühsame Zeichenfolgenmanipulation und die Verkettung von durch Trennzeichen getrennten IDs. Dieser Ansatz kann im Hinblick auf Leistung und Flexibilität suboptimal sein. Mit der Einführung von SQL Server 2008 erwies sich jedoch eine neue Funktion namens „Tabellenwertparameter“ als überlegene Lösung.

Durch die Verwendung von Tabellenwertparametern können Entwickler einen benutzerdefinierten Tabellentyp in definieren Datenbank und übergeben Sie dann eine Liste von Werten dieses Typs als einzelnen Parameter an die gespeicherte Prozedur. Dieser Ansatz macht die manuelle Verkettung von Zeichenfolgen überflüssig und bietet mehrere Vorteile:

  • Verbesserte Leistung: Tabellenwertparameter ermöglichen es der Datenbank, die Datenmanipulation effizienter und damit schneller durchzuführen Ausführungszeiten.
  • Vereinfachter Code: Der Code wird prägnanter und lesbarer, da keine komplexe Zeichenfolgenmanipulation mehr erforderlich ist Operationen.
  • Erhöhte Flexibilität: Tabellenwertparameter unterstützen komplexere Datentypen und ermöglichen eine zusätzliche Verarbeitung innerhalb der gespeicherten Prozedur.

Zur Nutzung von Tabellenwerten Um Parameter zu verwenden, müssen Entwickler einen benutzerdefinierten Tabellentyp in der Datenbank erstellen und dann die gespeicherte Prozedur so ändern, dass sie diesen Typ als Parameter akzeptiert. Der folgende Codeausschnitt zeigt, wie dieser Ansatz implementiert wird:

C#-Code:

public void AddItemsToReport(string connStr, int Id, List<int> itemList)
{
    using (SqlConnection _connection = new SqlConnection(connStr))
    {
        using (SqlCommand _sqlcommand = new SqlCommand("AddItemsToReport", _connection))
        {
            _sqlcommand.CommandType = CommandType.StoredProcedure;

            _sqlcommand.Parameters.AddWithValue("ReportId", Id);
            _sqlcommand.Parameters.AddWithValue("Items", itemList);

            _connection.Open();
            _sqlcommand.ExecuteNonQuery();
        }
    }
}
Nach dem Login kopieren

SQL Stored Procedure:

CREATE PROCEDURE AddItemsToReport (@ReportId int, @Items IntArray)
AS
BEGIN
   -- Insert each item into ReportItem table
   INSERT INTO ReportItem (ReportId, ItemId)
   SELECT @ReportId, Item
   FROM @Items
END
Nach dem Login kopieren

In diesem Beispiel ist der Typ „IntArray“ ein benutzerdefinierter Tabellentyp, der dem zugeordnet ist Liste in C#. Der Parameter „@Items“ kann dann die Liste der Artikel-IDs als eine einzelne Entität akzeptieren, was sowohl die Leistung als auch die Lesbarkeit des Codes verbessert.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste effizient an eine gespeicherte SQL-Prozedur übergeben?. 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