Übergabe einer Liste von Zeichenfolgen an eine gespeicherte SQL Server-Prozedur unter Verwendung eines benutzerdefinierten Tabellentyps
Wenn Sie eine gespeicherte SQL Server-Prozedur aus C# aufrufen, müssen Sie möglicherweise eine Liste von Zeichenfolgen als Parameter übergeben. Während für die Handhabung einfacher Datentypen Standardparameter ausreichen, ist für komplexe Datenstrukturen wie Listen ein ausgefeilterer Ansatz erforderlich.
Um eine Liste von Zeichenfolgen zu übergeben, können wir die UDTT-Funktion (User-Defined Table Type) von SQL Server nutzen. Mit dieser Funktion können wir einen benutzerdefinierten Datentyp erstellen, der eine Tabelle zum Speichern einer Datensammlung simuliert.
Benutzerdefinierten Tabellentyp erstellen
Zuerst müssen wir einen benutzerdefinierten Tabellentyp (UDTT) erstellen:
<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );</code>
Dieses UDTT definiert eine einzelne Spalte mit dem Namen „Item“ zur Aufnahme von Zeichenfolgen.
Gespeicherte Prozedur ändern
Als nächstes ändern wir die gespeicherte Prozedur, um UDTT-Parameter zu akzeptieren:
<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- 只返回我们传入的项目 SELECT l.Item FROM @list l; END</code>
UDTT in C# auffüllen
In C# verwenden wir DataTable, um UDTT zu füllen:
<code class="language-csharp">using (var table = new DataTable()) { table.Columns.Add("Item", typeof(string)); // ...此处添加循环填充字符串列表到DataTable的代码... SqlParameter pList = new SqlParameter("@list", SqlDbType.Structured); pList.Value = table; }</code>
UDTT-Parameter an gespeicherte Prozeduren übergeben
Zuletzt übergeben wir die UDTT-Parameter an die gespeicherte Prozedur:
<code class="language-csharp">using (var 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>
Dieser Ansatz ermöglicht es uns, eine Liste von Zeichenfolgen effizient an eine gespeicherte SQL Server-Prozedur zu übergeben.
Das obige ist der detaillierte Inhalt vonWie übergebe ich eine Liste von Zeichenfolgen mithilfe eines benutzerdefinierten Tabellentyps an eine gespeicherte SQL Server-Prozedur?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!