first commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
DELIMITER //
|
||||
CREATE OR REPLACE PROCEDURE sys_transfer_userroles2owned()
|
||||
BEGIN
|
||||
/*
|
||||
function : 配合 amis 的 transfer 元件, 將userroles 寫入暫存在 owned 欄位
|
||||
description: 本程式基本上只會很低頻率的使用, 因為程式的 SOP 是由 owned -> userrole
|
||||
不會逆向執行
|
||||
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_roleid VARCHAR(100);
|
||||
DECLARE v_userids TEXT;
|
||||
|
||||
-- 宣告游標,按 roleid 分組取得所有 userid
|
||||
DECLARE cur CURSOR FOR
|
||||
SELECT roleid, GROUP_CONCAT(userid SEPARATOR ',')
|
||||
FROM sys_userroles
|
||||
GROUP BY roleid;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = TRUE;
|
||||
|
||||
OPEN cur;
|
||||
|
||||
read_loop: LOOP
|
||||
FETCH cur INTO v_roleid, v_userids;
|
||||
IF v_done THEN
|
||||
LEAVE read_loop;
|
||||
END IF;
|
||||
|
||||
-- 更新 owned 欄位
|
||||
UPDATE sys_roles SET owned = v_userids WHERE roleid = v_roleid;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur;
|
||||
END //
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user