Heim > Backend-Entwicklung > C++ > Wie übergebe ich eine C#-Stringliste an die IN-Klausel einer gespeicherten SQL Server-Prozedur?

Wie übergebe ich eine C#-Stringliste an die IN-Klausel einer gespeicherten SQL Server-Prozedur?

Patricia Arquette
Freigeben: 2025-01-04 15:55:39
Original
458 Leute haben es durchsucht

How to Pass a C# String List to an SQL Server Stored Procedure's IN Clause?

Übergabe von Listen an gespeicherte SQL Server-Prozeduren von C#

Im angegebenen C#-Code wird eine gespeicherte Prozedur mit verschiedenen Parameterwerten aufgerufen, einschließlich einer Liste von Zeichenfolgen. Die Abfrage innerhalb der gespeicherten Prozedur erfordert jedoch, dass die Liste als Teil der IN-Klausel übergeben wird.

Lösung: Verwendung benutzerdefinierter Tabellentypen (SQL Server 2008)

SQL Server 2008 führte benutzerdefinierte Tabellentypen ein, eine Funktion, die die strukturierte Übergabe von Datensammlungen an gespeicherte Prozeduren ermöglicht. So implementieren Sie diese Lösung:

1. Erstellen Sie einen benutzerdefinierten Tabellentyp

Erstellen Sie einen Tabellentyp, der der Liste der Zeichenfolgen entspricht. Zum Beispiel:

CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);
Nach dem Login kopieren

2. Ändern Sie die gespeicherte Prozedur

Passen Sie die gespeicherte Prozedur an, um den Tabellentyp als Eingabeparameter zu akzeptieren:

CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- Query using the table type
    SELECT l.Item FROM @list l;
END
Nach dem Login kopieren

3. Füllen Sie den Tabellentyp in C#

Erstellen Sie in C# ein DataTable-Objekt und füllen Sie es mit der Liste der Zeichenfolgen. Definieren Sie dann einen Parameter, um die Datentabelle an die gespeicherte Prozedur zu übergeben.

using (var table = new DataTable())
{
    table.Columns.Add("Item", typeof(string));

    for (int i = 0; i < 10; i++)
        table.Rows.Add("Item " + i.ToString());

    var pList = new SqlParameter("@list", SqlDbType.Structured);
    pList.TypeName = "dbo.StringList";
    pList.Value = table;

    cmd.Parameters.Add(pList);
}
Nach dem Login kopieren

4. Führen Sie die gespeicherte Prozedur aus

Führen Sie die gespeicherte Prozedur mit dem ausgefüllten SqlParameter-Objekt aus.

Beispielverwendung:

using (var con = new SqlConnection(connstring))
{
    con.Open();

    using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con))
    {
        using (var dr = cmd.ExecuteReader())
        {
            while (dr.Read())
                Console.WriteLine(dr["Item"].ToString());
        }
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie übergebe ich eine C#-Stringliste an die IN-Klausel einer gespeicherten SQL Server-Prozedur?. 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