Files
Omni_app.db/sys_transfer_rolemenusecurity2owned.txt
T
2026-02-06 23:26:59 +08:00

42 lines
1.2 KiB
Plaintext

DELIMITER //
CREATE OR REPLACE PROCEDURE sys_transfer_rolemenusecurity2owned()
BEGIN
/*
function : 配合 amis 的 transfer 元件, 將 rolemenusecurity 寫入暫存在 owned 欄位
description: 本程式基本上只會很低頻率的使用, 因為程式的 SOP 是由 owned -> rolemenusecurity
不會逆向執行
build date : 2021/10/22
modify history
item who date modify docs
==== ========== ========== ================================================
1 michael 2021-10-17 新增
2 Michael 2025/07/20 改寫為 MariaDB 並最佳化(ChatGPT+DeepSeek)
*/
DECLARE v_done INT DEFAULT FALSE;
DECLARE v_menuid VARCHAR(100);
DECLARE v_roleids TEXT;
-- 宣告游標,按 menuid 分組取得所有 roleid
DECLARE cur CURSOR FOR
SELECT menuid, GROUP_CONCAT(roleid SEPARATOR ',')
FROM sys_rolemenusecurity
GROUP BY menuid;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO v_menuid, v_roleids;
IF v_done THEN
LEAVE read_loop;
END IF;
-- 更新 owned 欄位
UPDATE sys_menutable SET owned = v_roleids WHERE menuid = v_menuid;
END LOOP;
CLOSE cur;
END //
DELIMITER ;