mysql 存儲過程

CREATE PROCEDURE addCacrmUser ( ) BEGIN
    DECLARE
        error INTEGER DEFAULT 1;
    DECLARE
        existsFlag VARCHAR ( 255 ) DEFAULT "";
    DECLARE
        back_id VARCHAR ( 255 ) DEFAULT "";
    DECLARE
        ca_back_code VARCHAR ( 255 ) DEFAULT "";
    DECLARE
        back_type VARCHAR ( 255 ) DEFAULT "";
    DECLARE
        back_bottom_level VARCHAR ( 255 ) DEFAULT "";
    DECLARE
        back_four_level VARCHAR ( 255 ) DEFAULT "";
    DECLARE
        back_three_level VARCHAR ( 255 ) DEFAULT "";
    DECLARE
        back_two_level VARCHAR ( 255 ) DEFAULT "";
    DECLARE
        back_one_level VARCHAR ( 255 ) DEFAULT "";
    DECLARE
    CONTINUE HANDLER FOR SQLEXCEPTION 
        SET error =- 1;
    START TRANSACTION;
    DELETE 
    FROM
        cacrm_ca_crm_user_helper 
    WHERE
        job_code IN ( SELECT job_code FROM cacrm_ca_crm_user );
    DELETE 
    FROM
        cacrm_ca_crm_user_helper 
    WHERE
        job_code = "";
    SELECT
        job_code INTO existsFlag 
    FROM
        cacrm_ca_crm_user_helper 
    WHERE
        back_code != "" 
        AND cacrm_ca_crm_user_helper.back_code NOT IN ( SELECT job_code FROM cacrm_ca_crm_user );
    IF
        existsFlag != "" THEN
        SELECT
            existsFlag;
        
        SET error =- 1;
        
    END IF;
    SELECT
        id,
        four_level,
        job_code,
        type,
        three_level,
        two_level,
        one_level INTO back_id,
        back_four_level,
        ca_back_code,
        back_type,
        back_three_level,
        back_two_level,
        back_one_level 
    FROM
        cacrm_ca_crm_user 
    WHERE
        job_code IN ( SELECT back_code FROM cacrm_ca_crm_user_helper );
    UPDATE cacrm_ca_crm_user_helper 
    SET four_level = back_four_level,
    three_level = back_three_level,
    two_level = back_two_level,
    one_level = one_level 
    WHERE
        back_code = ca_back_code;
    UPDATE cacrm_ca_crm_user_helper 
    SET back_type = ca_back_code 
    WHERE
        back_code = back_code;
    INSERT INTO cacrm_ca_crm_user  ( `code`, `job_code`, `four_level`, three_level, two_level, one_level, state, source ) SELECT
    `code`,
    `job_code`,
    `four_level`,
    three_level,
    two_level,
    one_level,
    state,
    source 
    FROM
        cacrm_ca_crm_user_helper 
    WHERE
        cacrm_ca_crm_user.job_code = cacrm_ca_crm_user_helper.job_code;
    IF
        error = - 1 THEN
            ROLLBACK;
        ELSE COMMIT;
        
    END IF;
    SELECT
        error,
        existsFlag;
    
END;--     drop PROCEDURE if EXISTS addCacrmUser
-- CALL addCacrmUser

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