Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chuyển Danh sách các chuỗi vào một thủ tục được lưu trữ

Đâ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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Linq to Entities (EF 4.1):Làm thế nào để thực hiện một SQL LIKE với ký tự đại diện ở giữa ('% term% term%')?

  2. Cách sao chép cơ sở dữ liệu SQL Server 2005 từ cục bộ sang máy chủ

  3. chọn từng nút xml bằng SQL

  4. Cách lưu trữ và truy xuất tệp DICOM trong SQL Server bằng C #

  5. Cách tìm N bản ghi liên tiếp trong bảng bằng SQL