迭代存储过程中表变量的值

时间:2014-08-12 22:32:49

标签: sql sql-server stored-procedures

我正在编写存储过程如下:

 CREATE PROCEDURE ListByOrderRequestId
    @EntityId   int,
    @EntityTypeId varchar(8)    
AS
BEGIN      
    SET NOCOUNT ON;
    Declare @IDS table(OrderRequestId int)
    INSERT INTO @IDS
        SELECT  OrderRequestTaskId       
        FROM OrderRequestTask ORT WITH (NOLOCK)          
        WHERE ORT.OrderRequestId = @EntityId

        SELECT  N.EntityNoteId AS Id, 
                N.UpdateDate AS DateStamp, 
                N.EntityNoteText,                   
                N.EntityId,
                N.EntityNoteTypeId,
                N.EntityTypeId
        FROM  EntityNote N          
        WHERE (N.EntityId = @EntityId AND N.EntityTypeId ='ORDREQ')
              *OR(N.EntityId = @IDS VAL1 AND N.EntityTypeId ='TASK')  
               OR(N.EntityId = @IDS VAL2 AND N.EntityTypeId ='TASK')*                   


END

表@IDS可以包含0或1个或更多值。我想遍历@TDS中的值并相应地创建上面的where子句。请帮帮我。

1 个答案:

答案 0 :(得分:2)

与循环遍历表格相反,您可以在where子句中使用它,如下所示:

Select * From {Your Table} Where ID in (Select OrderRequestId From IDS)

这比循环要快得多。