Heim > Datenbank > MySQL-Tutorial > Wie kann ich ein Array von Parametern effizient an eine gespeicherte SQL Server-Prozedur übergeben?

Wie kann ich ein Array von Parametern effizient an eine gespeicherte SQL Server-Prozedur übergeben?

Susan Sarandon
Freigeben: 2025-01-10 17:27:40
Original
591 Leute haben es durchsucht

How Can I Pass an Array of Parameters to a SQL Server Stored Procedure Efficiently?

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

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

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

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

5. Gespeicherte Prozedur ausführen

Führen Sie die gespeicherte Prozedur aus und verarbeiten Sie die Ergebnisse.

Vorteile der Verwendung von TVP

  • Typsichere Parameterübergabe
  • Verbesserte Leistung im Vergleich zur Serialisierung und Deserialisierung von Daten
  • Lesbare und benutzerfreundliche Syntax

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!

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