0

我想按顺序向表中添加和更新一些列(P_1、P_2、P_3...)。要更新 P_2,我需要在上一步中更新 P_1。有没有办法编写一个可以在SSMS中执行此操作的循环

for i in (1 to 10)
     alter table tab1 add P_i
     if(i>1)
          update tab1 set P_i = P_(i-1)*2+[blah blah]
     else
          update tab1 set p_i = [blah blah]
     end
end
4

1 回答 1

0

你当然可以。这是您可以在 SSMS 中执行的一些条件逻辑的示例。这将向您展示如何执行 WHILE 循环、IF/THEN 语句和 CASE 语句。HTH。

-- DROP TABLE dbo.Test
CREATE TABLE dbo.Test ( myID INT );

DECLARE @iteration INT = 0;

WHILE @iteration < 10
BEGIN
    IF @iteration = 0
    BEGIN
        INSERT INTO dbo.Test VALUES (-1);
    END;
    ELSE
    BEGIN
        UPDATE dbo.Test
        SET myID = CASE 
                    WHEN @iteration = 1 THEN 0 
                    WHEN @iteration = 2 THEN 123
                    ELSE @iteration 
                   END;
    END;

    SELECT * FROM dbo.Test;

    SET @iteration += 1;
END;
于 2013-03-12T18:37:29.750 回答