first commit
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
DELIMITER //
|
||||
|
||||
CREATE OR REPLACE FUNCTION zen_get_keyvalue(
|
||||
p_tablename VARCHAR(100),
|
||||
p_fieldname VARCHAR(20)
|
||||
)
|
||||
RETURNS TEXT
|
||||
DETERMINISTIC
|
||||
/*
|
||||
Function : 改寫成 api 給 amis 呼叫時, 如果一個 Form 上有多個 select 是固定內容
|
||||
Description: 如上
|
||||
Build Date : 2022/02/16
|
||||
|
||||
Modify History
|
||||
Item Who Date Modify Docs
|
||||
===M= ========== ========== ================================================
|
||||
1 Michael 2022/02/16 Init
|
||||
*/
|
||||
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_rets TEXT;
|
||||
DECLARE v_imax INT;
|
||||
DECLARE v_inow INT;
|
||||
DECLARE v_rowid INT DEFAULT 1;
|
||||
|
||||
-- 臨時表儲存 JSON 數據
|
||||
DROP TEMPORARY TABLE IF EXISTS temp_jsondata;
|
||||
CREATE TEMPORARY TABLE temp_jsondata (
|
||||
rowid INT AUTO_INCREMENT PRIMARY KEY,
|
||||
value VARCHAR(100),
|
||||
label VARCHAR(100)
|
||||
);
|
||||
|
||||
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)
|
||||
SELECT keyid AS value, keyvalue AS label
|
||||
FROM zen_keyvalue
|
||||
WHERE tablename = p_tablename AND fieldname = p_fieldname;
|
||||
ELSE
|
||||
INSERT INTO temp_jsondata (value, label)
|
||||
SELECT keyid AS value, keyvalue AS label
|
||||
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 INTO v_value, v_label
|
||||
FROM temp_jsondata
|
||||
WHERE rowid = v_inow;
|
||||
|
||||
SET v_rets = CONCAT(v_rets,
|
||||
' {', v_crlf,
|
||||
' "label": "', v_label, '",', v_crlf,
|
||||
' "value": "', v_value, '"', v_crlf,
|
||||
' }', v_comma, v_crlf);
|
||||
|
||||
SET v_inow = v_inow + 1;
|
||||
END WHILE;
|
||||
|
||||
SET v_rets = CONCAT('"options": [ ', v_rets, ' ],', v_crlf);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS temp_jsondata;
|
||||
|
||||
RETURN v_rets;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user