Đây thực sự là một bản sao của các liên kết bạn đã đăng. Thay vì cố gắng phân tích cú pháp một danh sách các giá trị, hãy chuyển một tham số có giá trị bảng.
Đầu tiên, hãy tạo kiểu của tham số trong cơ sở dữ liệu (chỉ một lần).
CREATE TYPE [dbo].[IdList] AS TABLE(
[Id] int NULL
);
Sau đó, tạo một thủ tục chấp nhận tham số này:
CREATE PROCEDURE [dbo].[GetWorkspaceMapDetailsForUserByGroups]
@workspaceID int,
@groupIds IdList READONLY
AS
BEGIN
SELECT
m.*
FROM GeoAppMapDef m
inner join @groupIds on [email protected]
WHERE
m.workspaceID = @workspaceID
and m.IsDeleted = 0
END
Về phía khách hàng, hãy tạo DataTable với một cột được nhập nội dung duy nhất được gọi là Id
, hãy điền vào nó các ID bạn muốn, sau đó sử dụng nó làm giá trị của @groupIds
tham số
var table = new DataTable();
table.Columns.Add("Id", typeof(int));
for (int i = 0; i < 10; i++)
table.Rows.Add(i);
var pList = new SqlParameter("@groupIds", SqlDbType.Structured);
pList.TypeName = "dbo.IdList";
pList.Value = table;
Tôi đã sao chép câu hỏi này từ câu hỏi trùng lặp với một vài sửa đổi.