39 lines
1.2 KiB
Plaintext
39 lines
1.2 KiB
Plaintext
DELIMITER //
|
|
CREATE OR REPLACE PROCEDURE sys_transfer_owned2userroles(
|
|
IN p_para_roleid VARCHAR(100)
|
|
)
|
|
BEGIN
|
|
/*
|
|
function : 配合 amis 的 transfer 元件, 將暫存在 owned 欄位的值, 寫到 userroles
|
|
description: 目前先配合 omi_api 的存檔後機制(sys_transaction) 執行
|
|
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_owned TEXT;
|
|
|
|
-- 取得 owned 欄位值
|
|
SELECT owned INTO v_owned FROM sys_roles WHERE roleid = p_para_roleid;
|
|
|
|
-- 先刪除現有記錄
|
|
DELETE FROM sys_userroles WHERE roleid = p_para_roleid;
|
|
|
|
-- 使用 STRING_SPLIT 函數插入新記錄
|
|
IF v_owned IS NOT NULL AND v_owned != '' THEN
|
|
SET @sql = CONCAT(
|
|
'INSERT INTO sys_userroles (roleid, userid) ',
|
|
'SELECT ''', p_para_roleid, ''', value ',
|
|
'FROM STRING_SPLIT(''', v_owned, ''', '','') ',
|
|
'WHERE value != '''';'
|
|
);
|
|
|
|
PREPARE stmt FROM @sql;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
END //
|
|
DELIMITER ; |