Bạn có thể tận dụng thực tế là SQL Server 2008 hiện hỗ trợ các loại bảng. Bạn có thể xác định một loại bảng và ở phía .net xây dựng một DataTable
và chuyển nó như một tham số cho thủ tục được lưu trữ của bạn. Về phía SP, tham số đó thuộc loại [bất kỳ loại bảng nào bạn đã tạo] Đây là một ví dụ.
TotalPositions = [Some List] //of CSV List
DataTable Positions = new DataTable(); //Create the Datatype
Positions.Columns.Add("PositionID", typeof(int)); //
foreach (string sPos in TotalPositions.Split(','))
Positions.Rows.Add(int.Parse(sPos));
Sau đó, bạn có thể Nối các Vị trí làm tham số cho quy trình đã lưu trữ của mình
SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions
command.Parameters.Add(Param);
Trong cơ sở dữ liệu của bạn, bạn phải xác định một loại bảng là
CREATE TYPE [dbo].[Positions] AS TABLE(
[Position] int NULL,
)
GO
và trong thủ tục được lưu trữ của bạn, hãy thêm
@MyPositions Positions Readonly
Bây giờ bạn có thể xử lý @MyPositions
dưới dạng một bảng trong thủ tục của bạn và so sánh với nó.