Mysql存儲過程查詢數據更新別的表里(帶注解)


DELIMITER// #防止mysql遇到分號(;)就執行,換成//,后面遇到//才執行。
CREATE PROCEDURE setAccountIdFrameId() #創建名為setAccountIdFrameId存儲過程
BEGIN
# 聲明變量
DECLARE accountids INT(11);
DECLARE frameids VARCHAR(100);
#定義結束標識
DECLARE done INT DEFAULT 0;
# 定義一個游標來記錄sql查詢的結果
DECLARE cur CURSOR FOR 
    SELECT a.accountid,f.frameid FROM nst_t_account a 
    LEFT JOIN nst_t_accountmiddle m
    ON a.username= m.usr_login
    LEFT JOIN nst_t_frame f
    ON CONCAT(m.USR_UDF_SETID,m.USR_UDF_DEPTID)= f.framecode
    WHERE m.usr_login IS NOT NULL
    AND f.frameid IS NOT NULL;
#定義游標的結束--當遍歷完成時,將DONE設置為1
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
# 打開游標
OPEN cur;
# 將游標向下移1行,獲取的數據放入之前定義的變量accountids,frameids中
FETCH NEXT FROM cur INTO accountids,frameids;
-- 遍歷游標每一行
REPEAT
    IF NOT done THEN
        UPDATE nst_t_account SET frameid=frameids WHERE accountid=accountids;
    END IF;
    # 將游標向下移1行,獲取的數據放入之前定義的變量accountids,frameids中
    FETCH NEXT FROM cur INTO accountids,frameids;
UNTIL done 
END REPEAT;
#關閉游標
CLOSE cur;
END;//

 

CALL setAccountIdFrameId();//執行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM