双重Transac SQL Server 2008

yaq*_*qui 2 sql-server while-loop

我对这个查询有些麻烦.问题是,只有一个是过程,第一个过程,对我来说不起作用.

这是我的代码:The While @j,不行,但我没有看到错误......

谢谢你的时间.

CREATE PROCEDURE InsertVar
AS

DECLARE @i int
DECLARE @j int

SET NOCOUNT ON;
SET @i = 1
SET @j = 1

    WHILE @j < 21
        BEGIN
            WHILE @i < 11
                BEGIN
                    INSERT INTO Var(idline,idVar,CheckBox ) 
                    VALUES(@j,@i,0); 
                    SET @i = @i + 1;
                END;
        SET @j = @j + 1;
    END;

SELECT * FROM Var;
GO
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

还有其他方法可以执行此逻辑(例如单个查询).但是你的问题是你没有i在循环内部重新初始化.试试这个:

CREATE PROCEDURE InsertVar
AS
BEGIN
    DECLARE @i int;
    DECLARE @j int;

    SET NOCOUNT ON;
    SET @j = 1;

    WHILE @j < 21
        BEGIN
            SET @i = 1;
            WHILE @i < 11
                BEGIN
                    INSERT INTO Var(idline, idVar, CheckBox) 
                        VALUES(@j, @i, 0); 
                    SET @i = @i + 1;
                END;
        SET @j = @j + 1;
    END;

    SELECT * FROM Var;
END;
GO
Run Code Online (Sandbox Code Playgroud)

  • @Mohit在proc结束时设置`NOCOUNT OFF`.退出proc将无论如何重置它. (3认同)