> 데이터 베이스 > MySQL 튜토리얼 > 여러 항목을 SQL 저장 프로시저에 전달할 때 테이블 반환 매개 변수가 효율성을 어떻게 향상시킬 수 있습니까?

여러 항목을 SQL 저장 프로시저에 전달할 때 테이블 반환 매개 변수가 효율성을 어떻게 향상시킬 수 있습니까?

Barbara Streisand
풀어 주다: 2024-12-30 04:48:39
원래의
242명이 탐색했습니다.

How Can Table-Valued Parameters Improve Efficiency When Passing Multiple Items to SQL Stored Procedures?

테이블 값 매개 변수로 저장 프로시저 길들이기

문제:
여러 항목을 단일 데이터베이스 레코드로 효율적으로 전송하는 것은 여전히 ​​어려운 과제로 남아 있습니다. . 예를 들어 보고서에 여러 항목을 할당하려면 여러 레코드로 ReportItems 테이블을 업데이트해야 합니다. 기존 접근 방식에는 항목 목록을 문자열로 처리하기 위한 복잡한 코드와 보조 기능이 포함됩니다.

더 나은 솔루션 공개

SQL Server 2008의 출현과 함께 "테이블 반환 매개 변수"는 이 수수께끼에 대한 획기적인 솔루션입니다.

The Magic of TVP:
테이블 반환 매개 변수를 사용하면 테이블과 같은 구조를 매개 변수로 저장 프로시저에 전달할 수 있습니다. 우리의 경우 정수 항목 ID 테이블을 허용하도록 TVP를 정의할 수 있습니다.

수정된 코드:
수정된 코드는 훨씬 더 간결해졌습니다.

public void AddItemsToReport(string connStr, int Id, List<int> itemList)
{
    Database db = DatabaseFactory.CreateDatabase(connStr);

    string sqlCommand = "AddItemsToReport"
    DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand);

    // Convert the list to a DataTable (lightweight)
    DataTable table = itemList.ToDataTable();

    // Create the TVP parameter
    db.AddParameter(dbCommand, "Items", table);

    // Execute the stored procedure
    db.ExecuteNonQuery(dbCommand);
}
로그인 후 복사

향상된 저장 프로시저:
저장 프로시저는 다음을 단순화합니다. 추가:

INSERT INTO ReportItem (ReportId,ItemId)
SELECT  @ReportId,
          Id
FROM     @Items
로그인 후 복사

결론:
테이블 반환 매개 변수는 여러 항목을 SQL 저장 프로시저로 전송하기 위한 우아하고 효율적인 메커니즘을 제공합니다. 복잡한 문자열 조작 및 보조 기능의 필요성을 제거함으로써 TVP는 개발 프로세스를 간소화하고 코드 가독성을 향상시킵니다.

위 내용은 여러 항목을 SQL 저장 프로시저에 전달할 때 테이블 반환 매개 변수가 효율성을 어떻게 향상시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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