DELIMITER //

CREATE OR REPLACE FUNCTION `trans_cname` (
  p_fieldname VARCHAR(100),
  p_fieldcn NVARCHAR(100)
)
/*
  Function   : 根據 zen_fields,zen_dd_erp,zen_dd 的內容, 回傳可能的中文欄位 Title
  Description: 通常是配合 sp=zen_fieldspec_best 使用
  Build Date : 2021/11/25
  
  Modify History
    Item Who        Date       Modify Docs
    ==== ========== ========== ================================================
    1    Michael    2021/11/25 新增
    2    [改寫者]    2023-11-15 改寫為 MariaDB 版本並最佳化
*/
RETURNS NVARCHAR(100)
DETERMINISTIC
BEGIN
  DECLARE v_ret NVARCHAR(100);
  DECLARE v_dd_id VARCHAR(100);
  DECLARE v_dd_name VARCHAR(100);
  
  SET v_ret = p_fieldcn;
  
  IF p_fieldcn = '' OR p_fieldname = p_fieldcn THEN
    -- 先找 zen_fields
    SELECT fieldcn INTO v_ret 
    FROM zen_fields 
    WHERE fieldname = p_fieldname 
      AND fieldname <> fieldcn 
      AND IFNULL(fieldcn, '') <> ''
    LIMIT 1;
    
    -- 新增 zen_dd_erp(原 erp)
    IF IFNULL(v_ret, '') = '' THEN
      SELECT fieldcn INTO v_ret 
      FROM zen_dd_erp 
      WHERE fieldname = p_fieldname 
        AND fieldname <> fieldcn 
        AND IFNULL(fieldcn, '') <> ''
      LIMIT 1;
    END IF;
    
    -- 再找 zen_dd
    IF IFNULL(v_ret, '') = '' THEN
      SELECT fieldname, cname INTO v_dd_id, v_dd_name
      FROM zen_dd
      WHERE LOCATE(fieldname, p_fieldname) > 0
      LIMIT 1;
      
      IF IFNULL(v_dd_id, '') <> '' THEN
        SET v_ret = REPLACE(p_fieldname, v_dd_id, v_dd_name);
      END IF;
    END IF;
  END IF;
  
  -- 實在找不到的話, 只能回傳 fieldname
  /* IF IFNULL(v_ret, '') = '' THEN
    SET v_ret = p_fieldname;
  END IF; */
  
  RETURN v_ret;
END //

DELIMITER ;