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

52 lines
1.4 KiB
Plaintext

DELIMITER //
CREATE OR REPLACE PROCEDURE get_keyvalue(
IN p_tablename VARCHAR(20),
IN p_fieldname VARCHAR(20)
)
/*
Function : 配合 amis 的 select 元件,取得 key-value 資料
Description: 從 zen_keyvalue 表獲取鍵值對資料,用於下拉選項
合併了原有的 zen_keyvalue 和 sys_keyvalue 表功能
Build Date : 2023/07/19 (MariaDB 版本)
Modify History
Item Who Date Modify Docs
==== ========== ========== ================================================
1 Michael 2022/05/28 初始版本
2 Michael 2025/07/20 改寫為 MariaDB 並最佳化(ChatGPT+DeepSeek)
*/
BEGIN
DECLARE v_count INT;
-- 設置默認返回值
SELECT 0 AS code, 'ok' AS msg;
-- 檢查指定表名和欄位名的記錄是否存在
SELECT COUNT(*) INTO v_count
FROM zen_keyvalue
WHERE tablename = p_tablename
AND fieldname = p_fieldname;
-- 根據查詢結果返回資料
IF v_count > 0 THEN
-- 返回指定表名和欄位名的鍵值對
SELECT
keyid AS `value`,
keyvalue AS `label`
FROM zen_keyvalue
WHERE tablename = p_tablename
AND fieldname = p_fieldname;
ELSE
-- 返回默認欄位名的鍵值對
SELECT
keyid AS `value`,
keyvalue AS `label`
FROM zen_keyvalue
WHERE tablename = 'xxxx'
AND fieldname = p_fieldname;
END IF;
END //
DELIMITER ;