繁体   English   中英

尽管表中有很多记录,但 SQL Server 游标没有循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM