2015-03-19 51 views
0

我有一個數據表,它傳遞給StoredProcedure作爲參數,我想在存儲過程中爲數據表中的每一行執行查詢。如何在存儲過程中使用循環

datatable: 
Value  
000011% 
000012% 
000013% 
000014% 
000015% 
000016% 

Query goes like this: 
SELECT * FROM Test T 
     INNER JOIN Sample S ON T.TestId=S.SampleID 
     WHERE Title like'000011%' //This value will change for each datatbale row value 

回答

0

我不認爲你需要在這裏循環。通過查看您的數據,您可以嘗試使用LEFT()函數。

SELECT * 
FROM Test T 
     INNER JOIN Sample S ON T.TestId = S.SampleID 
WHERE LEFT(Title, 6) IN (SELECT LEFT(Value, 6) FROM ParaTable) 
+0

讓我來試試你的solution.Thank你。 – Lalita 2015-03-19 11:57:55

0

嘗試CROSS JOIN

DECLARE @DT TABLE(V NVARCHAR(MAX)) 
DECLARE @T TABLE(Title NVARCHAR(MAX)) 

INSERT INTO @DT VALUES 
('000011%'), 
('000012%'), 
('000013%'), 
('000014%'), 
('000015%'), 
('000016%') 

INSERT INTO @T VALUES 
('000011123'), 
('00001112345'), 
('000012123'), 
('000012123678'), 
('000013ABC'), 
('DEF'), 
('GHI') 

SELECT * FROM @DT dt 
CROSS JOIN @T t 
WHERE t.Title LIKE dt.V 

輸出:

V  Title 
000011% 000011123 
000011% 00001112345 
000012% 000012123 
000012% 000012123678 
000013% 000013ABC 

應用於查詢:

SELECT * FROM Test T 
     INNER JOIN Sample S ON T.TestId=S.SampleID 
     CROSS APPLY datatable dt 
     WHERE Title like dt.Value