嵌套游标 TSQL(SQL 服务器)

nested Cursor TSQL (SQL Server)

我正在使用 SQL 服务器并尝试构建嵌套游标。 (我知道游标不是做事的最佳方式,但我想不出任何其他解决方案)。

所以第一个 Cursor 正在经历一个临时 Table ##Flanschbreite 并将 FlanschMin 捕获到一个变量中。它工作正常。但是内部游标应该通过将 FlanschMin 捕获到变量 @FL2 中来做同样的事情。我想创建一个临时 table 来组合这两个变量的所有可能组合。外部光标工作正常,但内部光标不通过临时 table,它只是 returns 第一个条目。我认为 @@FetchStatus 有问题。

有什么明显的我做错了吗? (抱歉我的英语不好,我不是母语人士)

    DECLARE curFL1 CURSOR FOR
    SELECT FlanschMin FROM ##FlanschBreite;
    OPEN curFL1 

    FETCH next FROM curFL1 INTO @FL1                            
    WHILE @@Fetch_Status = 0

    BEGIN

        SELECT FlanschMin FROM ##FlanschBreite;
        OPEN curFL2

        FETCH next FROM curFL2 INTO @FL2                            
        WHILE @@Fetch_Status = 0

          BEGIN
            SET @IDFLansch += 1                                                 
            INSERT INTO ##FlanschZuweisung (IDFZ, FL1, FL2) VALUES (@IDFlansch, @FL1, @FL2)
            FETCH next FROM curFL2
          END
        CLOSE curFL2
        DEALLOCATE curFL2

    FETCH next FROM curFL1 INTO @FL1
    END
    CLOSE curFL1
    DEALLOCATE curFL1

我的##Flanschzuweisung 成绩:

IDFZ\ FL1\ FL2
1\     6\   6 
2\     8\   6    
3\    10\   6
4\     6\   6
5\     8\   6
...

我需要的是:

IDFZ\ FL1\ FL2
1\     6\   6
2\     8\   6
3\    10\   6
4\     6\   8
5\     8\   8    
6\    10\   8
7\     6\  10

...

你在哪里申报curFL2

但是无论如何,这似乎是一个简单的 CROSS JOIN 加上一个 ROW_NUMBER:

-- INSERT INTO ##FlanschZuweisung (IDFZ, FL1, FL2)
SELECT row_number() over (order by t1.FlanschMin, t2. FlanschMin),
   t1.FlanschMin, t2. FlanschMin
FROM ##FlanschBreite as t1 CROSS JOIN ##FlanschBreite as t2