82 lines
2.3 KiB
Plaintext
82 lines
2.3 KiB
Plaintext
DELIMITER //
|
|
|
|
CREATE OR REPLACE FUNCTION zen_get_mapping(
|
|
p_tablename VARCHAR(100),
|
|
p_fieldname VARCHAR(20)
|
|
)
|
|
/*
|
|
Function : Rewrite as an API for AMIS to call. Display JSON content with mapping icons
|
|
Description: As above
|
|
Build Date : 2022/02/16
|
|
|
|
Modify History
|
|
Item Who Date Modify Docs
|
|
==== ========== ========== ================================================
|
|
1 Michael 2022/02/16 Init
|
|
*/
|
|
RETURNS TEXT
|
|
BEGIN
|
|
DECLARE v_cnt INT;
|
|
DECLARE v_crlf VARCHAR(2);
|
|
DECLARE v_comma VARCHAR(1);
|
|
DECLARE v_value VARCHAR(100);
|
|
DECLARE v_label VARCHAR(100);
|
|
DECLARE v_keydesc VARCHAR(100);
|
|
DECLARE v_rets TEXT;
|
|
DECLARE v_imax INT;
|
|
DECLARE v_inow INT;
|
|
|
|
-- 创建临时表来存储JSON数据
|
|
DROP TEMPORARY TABLE IF EXISTS temp_jsondata;
|
|
CREATE TEMPORARY TABLE temp_jsondata (
|
|
value VARCHAR(100),
|
|
label VARCHAR(100),
|
|
keydesc VARCHAR(100),
|
|
rowid INT AUTO_INCREMENT PRIMARY KEY
|
|
);
|
|
|
|
SET v_crlf = CONCAT(CHAR(13), CHAR(10));
|
|
|
|
-- 检查是否有设置到 tablename
|
|
SELECT COUNT(*) INTO v_cnt FROM zen_keyvalue
|
|
WHERE tablename = p_tablename AND fieldname = p_fieldname;
|
|
|
|
IF v_cnt > 0 THEN
|
|
INSERT INTO temp_jsondata (value, label, keydesc)
|
|
SELECT keyid AS value, keyvalue AS label, keydesc
|
|
FROM zen_keyvalue
|
|
WHERE tablename = p_tablename AND fieldname = p_fieldname;
|
|
ELSE
|
|
INSERT INTO temp_jsondata (value, label, keydesc)
|
|
SELECT keyid AS value, keyvalue AS label, keydesc
|
|
FROM zen_keyvalue
|
|
WHERE tablename = 'xxxx' AND fieldname = p_fieldname;
|
|
END IF;
|
|
|
|
-- 返回 options []
|
|
SELECT COUNT(*) INTO v_imax FROM temp_jsondata;
|
|
SET v_inow = 1;
|
|
SET v_rets = '';
|
|
SET v_comma = ',';
|
|
|
|
WHILE v_inow <= v_imax DO
|
|
IF v_inow = v_imax THEN
|
|
SET v_comma = '';
|
|
END IF;
|
|
|
|
SELECT value, label, keydesc INTO v_value, v_label, v_keydesc
|
|
FROM temp_jsondata WHERE rowid = v_inow;
|
|
|
|
SET v_rets = CONCAT(v_rets,
|
|
-- ' "', v_value, '": "<span class=\"label label-', v_keydesc, '\">', v_label, '</span>"', v_comma);
|
|
' "', v_value, '": "<span class=', CHAR(39), 'label label-', v_keydesc, CHAR(39), '>', v_label, '</span>"', v_comma);
|
|
SET v_inow = v_inow + 1;
|
|
END WHILE;
|
|
|
|
SET v_rets = CONCAT('"map": { ', v_rets, ' },', v_crlf);
|
|
|
|
RETURN v_rets;
|
|
END //
|
|
|
|
DELIMITER ;
|