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

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

Susan Sarandon
풀어 주다: 2025-01-05 00:53:40
원래의
313명이 탐색했습니다.

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

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

C#에서 SQL Server 저장 프로시저를 호출할 때 문자열 목록 전달 매개변수로 사용하는 것은 어려울 수 있습니다. 그러나 SQL Server 2008 이상에서는 UDTT(사용자 정의 테이블 유형) 기능을 사용하는 솔루션이 있습니다.

UDTT 생성

먼저 UDTT를 생성하여 문자열 목록을 나타냅니다.

CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);
로그인 후 복사

저장된 항목 수정 절차

저장 프로시저에서 UDTT를 매개변수로 선언합니다.

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#에서 UDTT 채우기

C#에서 , DataTable을 생성하고 문자열 유형의 열을 추가합니다. "Item":

using System.Data;
using System.Data.SqlClient;

...

DataTable table = new DataTable();
table.Columns.Add("Item", typeof(string));
로그인 후 복사

DataTable을 문자열 목록으로 채웁니다.

for (int i = 0; i < 10; i++)
    table.Rows.Add("Item " + i.ToString());
로그인 후 복사

DataTable을 UDTT로 전달하는 SqlParameter를 만듭니다.

SqlParameter pList = new SqlParameter("@list", SqlDbType.Structured);
pList.TypeName = "dbo.StringList";
pList.Value = table;
로그인 후 복사

목록을 저장된 항목으로 전달 절차

SqlCommand에 SqlParameter를 추가하고 저장 프로시저를 실행합니다.

using (SqlConnection con = new SqlConnection(connstring))
{
    con.Open();

    using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con))
    {
        cmd.Parameters.Add(pList);

        using (SqlDataReader dr = cmd.ExecuteReader())
        {
            while (dr.Read())
                Console.WriteLine(dr["Item"].ToString());
        }
    }
}
로그인 후 복사

이 접근 방식을 사용하면 문자열 목록을 구조화된 형식으로 저장 프로시저에 전달할 수 있습니다. 복잡한 쿼리를 가능하게 합니다.

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

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