2014-08-12 3 views
0

Я пишу хранимая процедура выглядит следующим образом:Итерация по значениям переменной таблицы в хранимой процедуре

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. Пожалуйста, помогите мне.

ответ

2

В отличие от зацикливания через таблицу, вы могли бы просто использовать его в вашем где предложение вроде этого:

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

Это намного быстрее, чем цикл.

+1

Спасибо.Это сделал трюк. –

Смежные вопросы