> 데이터 베이스 > MySQL 튜토리얼 > TVP(테이블 값 매개 변수)를 사용하여 배열을 저장 프로시저에 효율적으로 전달하는 방법은 무엇입니까?

TVP(테이블 값 매개 변수)를 사용하여 배열을 저장 프로시저에 효율적으로 전달하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-10 17:23:43
원래의
824명이 탐색했습니다.

Efficiently Passing Arrays to Stored Procedures Using Table-Valued Parameters (TVPs)

테이블 값 매개변수(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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