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 중국어 웹사이트의 기타 관련 기사를 참조하세요!