>백엔드 개발 >C++ >C#에서 SQL Server 저장 프로시저로 문자열 목록을 효율적으로 전달하려면 어떻게 해야 합니까?

C#에서 SQL Server 저장 프로시저로 문자열 목록을 효율적으로 전달하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-04 22:35:40802검색

How Can I Efficiently Pass a List of Strings from C# to a SQL Server Stored Procedure?

C# SQL Server: 저장 프로시저에 목록 전달

C#에서는 코드를 통해 SQL Server 저장 프로시저를 호출할 수 있습니다. . 그러나 문자열 목록을 전달하는 것은 간단하지 않습니다. 이 문서에서는 UDT(사용자 정의 테이블 유형)를 대신 사용하는 대체 방법을 살펴봅니다.

사용자 정의 테이블 유형(UDT) 생성

SQL Server 2008에서는 UDT가 도입되었습니다. , 이는 복잡한 데이터 유형을 저장 프로시저에 전달하는 구조화된 방법을 제공합니다. 문자열 목록에 대한 UDT를 생성하려면:

CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);

저장 프로시저 수정

UDT 매개변수를 허용하려면 저장 프로시저를 다음과 같이 수정해야 합니다. :

CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- Just return the items we passed in
    SELECT l.Item FROM @list l;
END

C#에서 목록 전달 코드

마지막으로 C# 코드에서 목록을 전달하는 방법은 다음과 같습니다.

using System.Data;

var con = new SqlConnection(connstring);
con.Open();

using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con))
{
    using (var table = new DataTable())
    {
        table.Columns.Add("Item", typeof(string));

        for (int i = 0; i < 10; i++)
            table.Rows.Add("Item " + i.ToString());

        var pList = new SqlParameter("@list", SqlDbType.Structured);
        pList.TypeName = "dbo.StringList";
        pList.Value = table;

        cmd.Parameters.Add(pList);

        using (var dr = cmd.ExecuteReader())
        {
            while (dr.Read())
                Console.WriteLine(dr["Item"].ToString());
        }
    }
}

결론

UDT를 사용하는 것이 효과적입니다. C# 코드에서 SQL Server 저장 프로시저에 문자열 목록을 전달하는 방법입니다. 위에 설명된 단계를 따르면 개발자는 데이터베이스 상호 작용에서 동적 및 대규모 문자열 목록을 쉽게 처리할 수 있습니다.

위 내용은 C#에서 SQL Server 저장 프로시저로 문자열 목록을 효율적으로 전달하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.