You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用游标将cursor_created表数据重复插入cursor_copied表两次?

解决游标插入重复数据的问题

嘿,我明白你的需求啦——你想用游标把cursor_created里的每条数据都插入cursor_copied两次,但现在的代码只完成了单次插入。其实改起来超简单,只需要在循环体里多执行一次INSERT语句就行!

修改后的完整代码

DECLARE @ID INT 
DECLARE @Name NVARCHAR(50) 
DECLARE @Amount DECIMAL(18,0) 
DECLARE @Date NVARCHAR(50) 

DECLARE IDs CURSOR FOR 
SELECT ID, Name, Amount, Date FROM cursor_created 

OPEN IDs 
FETCH NEXT FROM IDs into @ID, @Name, @Amount, @Date 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    -- 第一次插入数据
    INSERT INTO cursor_copied (id, name, amount, date) 
    VALUES (@ID, @Name, @Amount, @Date) 
    -- 第二次插入同一条数据
    INSERT INTO cursor_copied (id, name, amount, date) 
    VALUES (@ID, @Name, @Amount, @Date) 

    -- 这些调试语句可以按需保留
    -- print @ID 
    -- print @Name 
    -- print @Amount 
    -- print @Date 
    -- SELECT @ID, @Name, @Amount, @Date FROM cursor_copied 

    FETCH NEXT FROM IDs into @ID, @Name, @Amount, @Date 
END 

CLOSE IDs 
DEALLOCATE IDs 

改动说明

原来的循环里每次只执行一次INSERT,所以每条数据只会被复制一次。现在在同一个循环周期内连续执行两次插入操作,游标每读取一条源数据,就会向目标表写入两次,正好能得到你想要的重复结果。

额外小建议:更高效的非游标写法

如果你的数据量不算特别大,其实没必要用游标(游标是逐行处理,性能相对偏低),可以直接用集合操作实现,代码更简洁,执行效率也更高:

INSERT INTO cursor_copied (id, name, amount, date)
SELECT id, name, amount, date FROM cursor_created
UNION ALL
SELECT id, name, amount, date FROM cursor_created;

这个语句会把cursor_created的所有数据查询两次,然后一次性批量插入到cursor_copied中,效果和游标版本完全一致,但速度会快很多哦~

内容的提问来源于stack exchange,提问作者aparna rai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:28:03