Diese Anleitung zeigt, wie Sie eine Liste von Zeichenfolgen als Parameter aus Ihrer C#-Anwendung an eine gespeicherte SQL Server-Prozedur übergeben. Diese Methode verwendet einen benutzerdefinierten Tabellentyp (UDTT), der für SQL Server 2008 und spätere Versionen geeignet ist.
Erstellen Sie zunächst eine UDTT in SQL Server, um Ihre String-Liste darzustellen:
<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );</code>
Als nächstes ändern Sie Ihre gespeicherte Prozedur, um die UDTT als Eingabe zu akzeptieren:
<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- Process the string list SELECT l.Item FROM @list l; END</code>
So verwenden Sie UDTT in Ihrem C#-Code:
<code class="language-csharp">using (SqlConnection con = new SqlConnection(connstring)) { con.Open(); using (SqlCommand cmd = new SqlCommand("sp_UseStringList", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@list", CreateStringListTable(new List<string> { "Apple", "Banana", "Orange" })); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { // Process each string from the reader string item = reader["Item"].ToString(); Console.WriteLine(item); } } } } //Helper function to create the DataTable private DataTable CreateStringListTable(List<string> stringList) { DataTable dt = new DataTable(); dt.Columns.Add("Item", typeof(string)); foreach (string str in stringList) { dt.Rows.Add(str); } return dt; }</code>
Zu Testzwecken können Sie die gespeicherte Prozedur wie folgt direkt in SQL Server Management Studio (SSMS) ausführen:
<code class="language-sql">DECLARE @list AS StringList; INSERT INTO @list VALUES ('Apple'); INSERT INTO @list VALUES ('Banana'); INSERT INTO @list VALUES ('Orange'); EXEC sp_UseStringList @list;</code>
Dieser Ansatz bietet eine robuste und effiziente Möglichkeit, Listen von Zeichenfolgen zu verarbeiten, wenn Sie mit gespeicherten SQL Server-Prozeduren Ihrer C#-Anwendungen interagieren. Die Verwendung eines UDTT gewährleistet die Datenintegrität und verbessert die Leistung im Vergleich zu anderen Methoden.
Das obige ist der detaillierte Inhalt vonWie übergebe ich eine Liste von Zeichenfolgen an eine gespeicherte SQL Server-Prozedur in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!