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