【发布时间】:2015-10-01 01:45:16
【问题描述】:
我正在使用 SQL Server 并尝试构建一个嵌套游标。 (我知道游标不是做事的最佳方式,但我想不出任何其他解决方案。
所以第一个光标正在通过一个临时表 ##Flanschbreite 并将 FlanschMin 捕获到一个变量中。它工作正常。但是内部光标应该通过将 FlanschMin 捕获到变量 @FL2 中来做同样的事情。我想创建一个临时表,它结合了这两个变量的所有可能组合。外部游标工作正常,但内部游标不通过临时表,它只返回第一个条目。我认为@@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
...
【问题讨论】:
-
CROSS JOIN可能也会这样做。更好地共享输入数据和所需的输出。 -
可能有一种方法可以在没有光标的情况下做你想做的事。提出另一个问题并描述您想要完成的任务。
-
您使用全局临时表而不是常规临时表是否有原因?全局临时表有许多挑战需要处理。
标签: sql sql-server cursor nested