사용자 정의 테이블 유형을 사용하여 SQL Server 저장 프로시저에 문자열 목록 전달
C#에서 SQL Server 저장 프로시저를 호출할 때 문자열 목록을 매개변수로 전달해야 할 수도 있습니다. 간단한 데이터 유형을 처리하는 데에는 표준 매개변수만으로도 충분하지만 목록과 같은 복잡한 데이터 구조에는 보다 정교한 접근 방식이 필요합니다.
문자열 목록을 전달하기 위해 SQL Server의 UDTT(사용자 정의 테이블 유형) 기능을 활용할 수 있습니다. 이 기능을 사용하면 데이터 컬렉션을 저장하기 위해 테이블을 시뮬레이션하는 사용자 정의 데이터 유형을 만들 수 있습니다.
사용자 정의 테이블 유형 생성
먼저 UDTT(사용자 정의 테이블 유형)를 생성해야 합니다.
<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );</code>
이 UDTT는 문자열을 보관하기 위해 "Item"이라는 단일 열을 정의합니다.
저장 프로시저 수정
다음으로 UDTT 매개변수를 허용하도록 저장 프로시저를 수정합니다.
<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- 只返回我们传入的项目 SELECT l.Item FROM @list l; END</code>
C#에서 UDTT 채우기
C#에서는 DataTable을 사용하여 UDTT를 채웁니다.
<code class="language-csharp">using (var table = new DataTable()) { table.Columns.Add("Item", typeof(string)); // ...此处添加循环填充字符串列表到DataTable的代码... SqlParameter pList = new SqlParameter("@list", SqlDbType.Structured); pList.Value = table; }</code>
UDTT 매개변수를 저장 프로시저에 전달
마지막으로 UDTT 매개변수를 저장 프로시저에 전달합니다.
<code class="language-csharp">using (var cmd = new SqlCommand("exec sp_UseStringList @list", con)) { cmd.Parameters.Add(pList); using (var dr = cmd.ExecuteReader()) { while (dr.Read()) Console.WriteLine(dr["Item"].ToString()); } }</code>
이 접근 방식을 사용하면 문자열 목록을 SQL Server 저장 프로시저에 효율적으로 전달할 수 있습니다.
위 내용은 사용자 정의 테이블 유형을 사용하여 문자열 목록을 SQL Server 저장 프로시저에 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!