Übergabe einer Liste von Zeichenfolgen an eine gespeicherte Prozedur in C#
Übergabe einer Liste von Zeichenfolgen beim Aufrufen einer gespeicherten SQL Server-Prozedur aus C# als Parameter kann eine Herausforderung sein. Es gibt jedoch eine Lösung, die die Funktion „User Defined Table Type“ (UDTT) in SQL Server 2008 und höher verwendet.
Erstellen der UDTT
Erstellen Sie zunächst eine UDTT für stellt die Liste der Zeichenfolgen dar:
CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );
Ändern des Gespeicherten Prozedur
Deklarieren Sie in der gespeicherten Prozedur die UDTT als Parameter:
CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- Just return the items we passed in SELECT l.Item FROM @list l; END
Auffüllen der UDTT in C#
In C# , erstellen Sie eine Datentabelle und fügen Sie eine Spalte vom Typ Zeichenfolge mit dem Namen „Item“ hinzu:
using System.Data; using System.Data.SqlClient; ... DataTable table = new DataTable(); table.Columns.Add("Item", typeof(string));
Füllen Sie die aus DataTable mit der Liste der Zeichenfolgen:
for (int i = 0; i < 10; i++) table.Rows.Add("Item " + i.ToString());
Erstellen Sie einen SqlParameter, um die DataTable als UDTT zu übergeben:
SqlParameter pList = new SqlParameter("@list", SqlDbType.Structured); pList.TypeName = "dbo.StringList"; pList.Value = table;
Übergeben der Liste an die gespeicherte Prozedur
Fügen Sie den SqlParameter zum SqlCommand hinzu und führen Sie den gespeicherten Befehl aus Prozedur:
using (SqlConnection con = new SqlConnection(connstring)) { con.Open(); using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con)) { cmd.Parameters.Add(pList); using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) Console.WriteLine(dr["Item"].ToString()); } } }
Mit diesem Ansatz können Sie eine Liste von Zeichenfolgen in einem strukturierten Format an eine gespeicherte Prozedur übergeben und so komplexe Abfragen ermöglichen.
Das obige ist der detaillierte Inhalt vonWie übergebe ich eine Liste von Zeichenfolgen von C# an eine gespeicherte SQL Server-Prozedur?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!