> 데이터 베이스 > MySQL 튜토리얼 > SQL 저장 프로시저에 목록을 효율적으로 전달하려면 어떻게 해야 합니까?

SQL 저장 프로시저에 목록을 효율적으로 전달하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2025-01-01 08:36:10
원래의
959명이 탐색했습니다.

How Can I Efficiently Pass a List to a SQL Stored Procedure?

합격자 목록 효율적으로 SQL 저장 프로시저로

일반적으로 여러 항목을 SQL 저장 프로시저에 전달하려면 지루한 문자열 조작과 구분 기호로 구분된 ID를 연결해야 했습니다. 이 접근 방식은 성능과 유연성 측면에서 최적이 아닐 수 있습니다. 그러나 SQL Server 2008의 등장과 함께 "테이블 반환 매개변수"라는 새로운 기능이 뛰어난 솔루션으로 등장했습니다.

테이블 반환 매개변수를 활용하여 개발자는 그런 다음 해당 유형의 값 목록을 단일 매개변수로 저장 프로시저에 전달합니다. 이 접근 방식을 사용하면 수동으로 문자열을 연결할 필요가 없으며 여러 가지 이점을 제공합니다.

  • 향상된 성능: 테이블 반환 매개변수를 사용하면 데이터베이스가 데이터 조작을 보다 효율적으로 처리할 수 있으므로 결과적으로 더 빠른 작업을 수행할 수 있습니다. 실행 시간.
  • 단순화된 코드: 코드가 더 간결해지고 읽기 쉬워집니다. 더 이상 복잡한 문자열 조작 작업이 필요하지 않습니다.
  • 유연성 향상: 테이블 반환 매개변수는 더 복잡한 데이터 유형을 지원하고 저장 프로시저 내에서 추가 처리를 허용합니다.

테이블 반환 매개 변수를 활용하려면 개발자는 데이터베이스에 사용자 정의 테이블 유형을 만든 다음 이 유형을 매개 변수로 허용하도록 저장 프로시저를 수정해야 합니다. 아래 코드 조각은 이 접근 방식을 구현하는 방법을 보여줍니다.

C# 코드:

public void AddItemsToReport(string connStr, int Id, List<int> itemList)
{
    using (SqlConnection _connection = new SqlConnection(connStr))
    {
        using (SqlCommand _sqlcommand = new SqlCommand("AddItemsToReport", _connection))
        {
            _sqlcommand.CommandType = CommandType.StoredProcedure;

            _sqlcommand.Parameters.AddWithValue("ReportId", Id);
            _sqlcommand.Parameters.AddWithValue("Items", itemList);

            _connection.Open();
            _sqlcommand.ExecuteNonQuery();
        }
    }
}
로그인 후 복사

SQL 저장 프로시저:

CREATE PROCEDURE AddItemsToReport (@ReportId int, @Items IntArray)
AS
BEGIN
   -- Insert each item into ReportItem table
   INSERT INTO ReportItem (ReportId, ItemId)
   SELECT @ReportId, Item
   FROM @Items
END
로그인 후 복사

이 예에서 "IntArray" 유형은 매핑하는 사용자 정의 테이블 유형입니다. List C#에서. 그런 다음 "@Items" 매개변수는 항목 ID 목록을 단일 엔터티로 허용하여 성능과 코드 가독성을 모두 향상시킬 수 있습니다.

위 내용은 SQL 저장 프로시저에 목록을 효율적으로 전달하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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