如何在sql server中的storedprocedure中为单个参数传递更多值

gan*_*esh 0 sql t-sql sql-server tsqlt

我的文字: -

CREATE proc usp_delete    
        @tranid int           
        as 
        begin 
    delete from customer where tranid in(@tranid)
     end
Run Code Online (Sandbox Code Playgroud)

注意: - 我想通过这个存储过程删除超过1条记录的记录,如: - 如果我通过1,2,3,4,5,6,那么应该删除所有6条记录

San*_*nny 5

您可以使用table-valued parameter,您需要声明它

CREATE TYPE EntityId AS TABLE  
( Id INT )
 GO

CREATE PROCEDURE usp_delete    
    @tranid EntityId READONLY
AS 
 BEGIN 
     DELETE c
     FROM customer c
     JOIN @tranid t ON t.Id=c.tranid 
 END
Run Code Online (Sandbox Code Playgroud)

对于使用TVP执行声明一个类型的变量并将其传递给存储过程

 DECLARE @entityId EntityId 

 INSERT INTO @entityId 
 VALUES(1),(2),(3),(4),(5)

 EXEC usp_delete @entityId 
Run Code Online (Sandbox Code Playgroud)