[英]SQL Server cursor is not looping although there are lots of records in the table
虽然SELECT id, also FROM names WHERE isnull(also,'')<>''1
返回 2000+ 个结果,但以下游标没有循环,我得到:
@count = 0
代码:
DECLARE @id BIGINT, @name NVARCHAR(1000)
DECLARE @aslo TABLE (id INT, name NVARCHAR(100))
DECLARE name_cur CURSOR FOR
(SELECT id, also
FROM names
WHERE ISNULL(also, '') <> '')
DECLARE @count INT = 0
OPEN name_cur
WHILE @@FETCH_STATUS = 0
BEGIN
SET @count = @count + 1
INSERT INTO @aslo (id, name)
SELECT @id, *
FROM string_split(@name, ',')
FETCH NEXT FROM name_cur INTO @id, @name;
END
CLOSE name_cur;
DEALLOCATE name_cur;
SELECT @count
SELECT COUNT(*) FROM @aslo a
我认为在没有游标的情况下执行此操作要简单得多。 这似乎相当于你想要做的:
INSERT INTO @aslo (id, name)
SELECT n.id, ss.value as name
FROM names n CROSS APPLY
string_split(n.name, ',') ss;
这是一个 db<>fiddle。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.