> 데이터 베이스 > MySQL 튜토리얼 > C#에서 SQL Server 저장 프로시저에 문자열 목록을 전달하는 방법은 무엇입니까?

C#에서 SQL Server 저장 프로시저에 문자열 목록을 전달하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-13 10:21:43
원래의
225명이 탐색했습니다.

How to Pass a List of Strings to a SQL Server Stored Procedure in C#?

C#에서 SQL Server 저장 프로시저에 문자열 목록 전달

이 가이드에서는 C# 애플리케이션에서 문자열 목록을 매개변수로 SQL Server 저장 프로시저에 전달하는 방법을 보여줍니다. 이 방법은 SQL Server 2008 이상 버전에 적합한 UDTT(사용자 정의 테이블 유형)를 활용합니다.

사용자 정의 테이블 유형(UDTT) 정의

먼저 문자열 목록을 나타내기 위해 SQL Server에서 UDTT를 만듭니다.

<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);</code>
로그인 후 복사

저장 프로시저 수정

다음으로 UDTT를 입력으로 허용하도록 저장 프로시저를 수정합니다.

<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>
로그인 후 복사

C# 구현

C# 코드 내에서 UDTT를 사용하는 방법은 다음과 같습니다.

<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>
로그인 후 복사

저장 프로시저 실행(SQL 예)

테스트 목적으로 다음과 같이 SSMS(SQL Server Management Studio)에서 직접 저장 프로시저를 실행할 수 있습니다.

<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>
로그인 후 복사

이 접근 방식은 C# 애플리케이션에서 SQL Server 저장 프로시저와 상호 작용할 때 문자열 목록을 처리하는 강력하고 효율적인 방법을 제공합니다. UDTT를 사용하면 다른 방법에 비해 데이터 무결성이 보장되고 성능이 향상됩니다.

위 내용은 C#에서 SQL Server 저장 프로시저에 문자열 목록을 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿