sqlserver 查询结果集遍历插入新表

业务场景:  从系统参数表查询数据, 关联不同账套后, 在系统参数详情表中插入关联结果, 大概需要 3 步:

一. 从系统单位表和账套表查询关联信息

二. 从系统参数详情表查询最大id

三. 遍历关联信息, 设置Id, 并插入系统参数详情表中
 

DECLARE @para_id AS INT,
@mod_code AS VARCHAR ( 50 ),
@max_para_id AS INT --用来记录最大 id

--声明一个游标( 可以把游标想象成每一条记录 )用来遍历查询到的结果
DECLARE
    C_paraId CURSOR FOR 
    SELECT para_id, mod_code
    FROM
        sys_para a,
        sys_copy b
    WHERE
        b.is_main = 1
        AND a.mod_code = '09'
        AND para_code = '0901' 
--打开游标
OPEN C_paraId 
--获取游标指向的数据
FETCH NEXT
FROM  C_paraId INTO @para_id, @mod_code
--使用游标遍历集合( @@FETCH_STATUS是默认全局变量,不用声明, =0表示匹配到了记录 )
WHILE
    @@FETCH_STATUS = 0 
        BEGIN
        --执行具体的操作
        --查询最大id
        SELECT
            @max_para_id = ( SELECT MAX ( para_id ) + 1 FROM sys_para_data );
        --插入详情表数据
        INSERT INTO sys_para_data ( para_id, mod_code)
        VALUES
            ( @max_para_id, @mod_code) 
     --游标指向下一条数据
     FETCH NEXT
     FROM C_paraId INTO @para_id, @mod_code
END 
--关闭游标
CLOSE C_paraId 
--释放游标
DEALLOCATE C_paraId

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章