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 ;
