42 lines
1.2 KiB
Plaintext
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 ; |