Bestehensliste
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:
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(); } } }
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
In diesem Beispiel ist der Typ „IntArray“ ein benutzerdefinierter Tabellentyp, der dem zugeordnet ist Liste
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!