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

 

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