Heim >Datenbank >MySQL-Tutorial >Wie übergebe ich eine C#-Stringliste an eine gespeicherte SQL Server-Prozedur?
Übergabe der Liste an die gespeicherte SQL Server-Prozedur in C#
Frage:
Sie müssen die Liste der Zeichenfolgen aus Ihrem C#-Code an die gespeicherte SQL Server-Prozedur übergeben. Diese Liste ist jedoch dynamisch und enthält Hunderte von Elementen.
Lösung:
Benutzerdefinierte Tabellentypen (UDTT) verwenden
SQL Server 2008 und höher bietet benutzerdefinierte Tabellentypen (UDTT), mit denen Sie benutzerdefinierte Datentypen für die Verwendung in gespeicherten Prozeduren erstellen können. Bitte folgen Sie diesen Schritten:
<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );</code>
<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- 只返回我们传入的项目 SELECT l.Item FROM @list l; END</code>
<code class="language-csharp">using (var table = new DataTable()) { table.Columns.Add("Item", typeof(string)); for (int i = 0; i < 1000; i++) // 假设列表包含1000个项目 { table.Rows.Add("Item " + i); } }</code>
<code class="language-csharp">var pList = new SqlParameter("@list", SqlDbType.Structured); pList.TypeName = "dbo.StringList"; pList.Value = table;</code>
<code class="language-csharp">using (var con = new SqlConnection(connstring)) { con.Open(); using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con)) { cmd.Parameters.Add(pList); using (var dr = cmd.ExecuteReader()) { while (dr.Read()) Console.WriteLine(dr["Item"].ToString()); } } }</code>
Denken Sie daran, connstring
durch Ihre eigene Verbindungszeichenfolge zu ersetzen. In diesem Codebeispiel wird davon ausgegangen, dass Ihre Liste 1000 Elemente enthält. Sie müssen die Schleife basierend auf der tatsächlichen Listengröße anpassen. Stellen Sie außerdem sicher, dass Ihre SQL Server-Instanz die Verwendung des Parameters READONLY
aktiviert hat.
Das obige ist der detaillierte Inhalt vonWie übergebe ich eine C#-Stringliste an eine gespeicherte SQL Server-Prozedur?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!