테이블 값 매개변수(TVP)를 사용하여 배열을 저장 프로시저에 전달
데이터베이스 애플리케이션에서는 배열이나 값 목록을 저장 프로시저에 전달해야 하는 경우가 많습니다. SQL Server 2008 이상의 경우 TVP(테이블 값 매개변수)가 가장 효율적인 솔루션을 제공합니다.
TVP를 사용하여 저장 프로시저 만들기
여기에는 먼저 TVP 유형을 정의한 다음 저장 프로시저를 만드는 작업이 포함됩니다.
<code class="language-sql">CREATE TYPE T1Ids AS Table ( t1Id INT ); CREATE PROCEDURE dbo.FindMatchingRowsInTable1 (@Table1Ids AS T1Ids READONLY) AS BEGIN SET NOCOUNT ON; SELECT Table1.t1Id FROM dbo.Table1 AS Table1 JOIN @Table1Ids AS paramTable1Ids ON Table1.t1Id = paramTable1Ids.t1Id; END</code>
저장 프로시저 호출
애플리케이션(C#을 사용하는 예) 내에서 데이터를 DataTable로 준비하고, 데이터베이스 연결을 설정하고, 명령 개체를 만듭니다.
<code class="language-csharp">DataTable t1Ids = new DataTable(); t1Ids.Columns.Add("t1Id", typeof(int)); int[] listOfIdsToFind = new[] { 1, 5, 9 }; foreach (int id in listOfIdsToFind) { t1Ids.Rows.Add(id); } SqlConnection testbedConnection = new SqlConnection( @"Data Source=.\SQLExpress;Initial Catalog=TestbedDb;Persist Security Info=True;User ID=testbedUser;Password=letmein12;Connect Timeout=5"); SqlCommand findMatchingRowsInTable1 = new SqlCommand("dbo.FindMatchingRowsInTable1", testbedConnection); findMatchingRowsInTable1.CommandType = CommandType.StoredProcedure; SqlParameter sqlParameter = new SqlParameter("Table1Ids", t1Ids); findMatchingRowsInTable1.Parameters.Add(sqlParameter);</code>
마지막으로 저장 프로시저를 실행하고 결과를 처리합니다.
<code class="language-csharp">SqlDataReader sqlDataReader = findMatchingRowsInTable1.ExecuteReader(); while (sqlDataReader.Read()) { Console.WriteLine("Matching t1ID: {0}", sqlDataReader["t1Id"]); }</code>
TVP는 배열이나 목록을 저장 프로시저에 전달하는 유형 안전하고 효율적인 방법을 제공하여 데이터베이스 애플리케이션 성능과 유지 관리성을 향상시킵니다.
위 내용은 TVP(테이블 값 매개 변수)를 사용하여 배열을 저장 프로시저에 효율적으로 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!