문제:
여러 항목을 단일 데이터베이스 레코드로 효율적으로 전송하는 것은 여전히 어려운 과제로 남아 있습니다. . 예를 들어 보고서에 여러 항목을 할당하려면 여러 레코드로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!