Heim > Datenbank > MySQL-Tutorial > Wie übergebe ich eine Liste von Zeichenfolgen mithilfe eines benutzerdefinierten Tabellentyps an eine gespeicherte SQL Server-Prozedur?

Wie übergebe ich eine Liste von Zeichenfolgen mithilfe eines benutzerdefinierten Tabellentyps an eine gespeicherte SQL Server-Prozedur?

Barbara Streisand
Freigeben: 2025-01-13 10:02:42
Original
131 Leute haben es durchsucht

How to Pass a List of Strings to a SQL Server Stored Procedure Using a User-Defined Table Type?

Ü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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

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