2016-08-25 43 views
0

我有三個整數7,3和2需要創建一個每個循環不斷變化的變量在T-SQL

我想寫一個循環我的變量每次換水然後執行一個SQL請求腳本對每個更改變量使用該已更改的變量。我不知道如何做到這一點。

我知道如何來聲明一個變量

declare @myvariable int; 
set @myvariable = 7 

select * 
from mytable 
where field1 = @myvariable 

請幫

+0

循環 – Ashu

回答

0

您可以使用tablevariable這一點。使用

方法-1 While循環

DECLARE @TableVariable TABLE (
    Id INT identity(1, 1) 
    ,Variable INT 
    ) 
DECLARE @End INT = 0 
    ,@start INT = 1 
    ,@myvariable INT 

INSERT INTO @TableVariable 
VALUES (7) 
    ,(3) 
    ,(2) 

WHILE @Start <= @End 
BEGIN 
    SELECT * 
    FROM mytable 
    WHERE field1 IN (
      SELECT variable 
      FROM @TableVariable 
      WHERE Id = @Start 
      ) 

    SET @Start = @Start + 1 
END 

方法2中使用加入

DECLARE @TableVariable TABLE (
     Id INT identity(1, 1) 
     ,Variable INT 
     ) 

    INSERT INTO @TableVariable 
    VALUES (7) 
     ,(3) 
     ,(2) 

SELECT * 
FROM mytable m 
INNER JOIN @TableVariable t ON m.field1 = t.Variable 
+0

的上限和下限是什麼,所以在選項1中,其中是myvariable集 – schalld

+0

我複製了選項並對其進行了修改。當我運行它時,說3行受到影響,但不會將選擇輸出到屏幕。 – schalld

0

確定該問題與方法1中的發言全體@啓動< = @end當@end是0我將它改爲3,效果很好。謝謝你的幫助。

DECLARE @TableVariable TABLE( ID INT標識(1,1) ,可變INT ) DECLARE @End INT = 3 --Original例如具有0 ,@開始INT = 1 ,@ MYVARIABLE INT

INSERT INTO @TableVariable VALUES(7) ,(3) ,(2)

WHILE @啓動< = @End BEGIN SELECT 頂部100 * FROM provider_status PS WHERE PS.provider_status_type_id IN(

 SELECT variable 
     FROM @TableVariable 
     WHERE Id = @Start 
     ) 

SET @Start = @Start + 1 

我仍然不知道@myvariable如何被設置和使用。

相關問題