Verwenden Sie Tabellenwertparameter (TVP), um Parameterarrays effizient an gespeicherte Prozeduren zu übergeben
Das Übergeben eines Arrays von Parametern ist eine sehr häufige Aufgabe bei der Verwendung gespeicherter Prozeduren. In diesem Artikel wird untersucht, wie ein Array von Bezeichnern (IDs) an eine gespeicherte Prozedur übergeben wird, um einen bestimmten Vorgang auszuführen.
Problembeschreibung
Wir müssen ein Array von IDs an eine gespeicherte Prozedur übergeben, die alle Zeilen in der Tabelle löscht, außer denen, die mit den IDs im Array übereinstimmen.
Lösung mit Tabellenwertparametern
In SQL Server 2008 und höher bieten Tabellenwertparameter (TVPs) eine effiziente Möglichkeit, Arrays an gespeicherte Prozeduren zu übergeben. So implementieren Sie dies mit TVP:
1. TVP erstellen
Erstellen Sie ein TVP zur Darstellung des ID-Arrays:
<code class="language-sql">CREATE TYPE T1Ids AS Table ( t1Id INT );</code>
2. Gespeicherte Prozedur erstellen
Erstellen Sie eine gespeicherte Prozedur mit TVP:
<code class="language-sql">CREATE PROCEDURE dbo.FindMatchingRowsInTable1( @Table1Ids AS T1Ids READONLY ) AS BEGIN -- 您的存储过程逻辑在此处 END</code>
3. TVP-Daten vorbereiten
Bereiten Sie in Ihrer Anwendung die TVP-Daten in einer DataTable vor:
<code class="language-csharp">DataTable t1Ids = new DataTable(); t1Ids.Columns.Add("t1Id", typeof(int)); foreach (int id in listOfIdsToFind) { t1Ids.Rows.Add(id); }</code>
4. Übergeben Sie TVP an die gespeicherte Prozedur
Übergeben Sie beim Aufruf der gespeicherten Prozedur TVP als Parameter:
<code class="language-csharp">SqlParameter sqlParameter = new SqlParameter("Table1Ids", t1Ids); findMatchingRowsInTable1.Parameters.Add(sqlParameter);</code>
5. Gespeicherte Prozedur ausführen
Führen Sie die gespeicherte Prozedur aus und verarbeiten Sie die Ergebnisse.
Vorteile der Verwendung von TVP
Dieser Ansatz vereinfacht die Aufgabe, komplexe Operationen an einem Datensatz durchzuführen, indem er Ihnen die einfache Übergabe eines Arrays von Parametern an eine gespeicherte Prozedur ermöglicht.
Das obige ist der detaillierte Inhalt vonWie kann ich ein Array von Parametern effizient an eine gespeicherte SQL Server-Prozedur übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!