开发者社区> 问答> 正文

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

虽然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

展开
收起
祖安文状元 2020-01-04 14:55:27 646 0
1 条回答
写回答
取消 提交回答
  • 我认为在没有光标的情况下执行此操作要简单得多。这似乎等效于您要执行的操作:

    INSERT INTO @aslo (id, name)
        SELECT n.id, ss.value as name
        FROM names n CROSS APPLY
             string_split(n.name, ',') ss;
    
    

    这是db <>小提琴。

    2020-01-04 14:55:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载