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

43 lines
1.2 KiB
Plaintext

DELIMITER //
CREATE OR REPLACE PROCEDURE get_anytable(
IN p_token VARCHAR(100),
IN p_tablename VARCHAR(20)
)
/*
萬用取值程式, 主要給 amis picker GET 查詢使用
Description: 根據傳入的 token 驗證使用者身份後,返回指定表的數據
Build Date : 2023/07/19 (MariaDB 版本)
Modify History
Item Who Date Modify Docs
==== ========== ========== ================================================
1 Michael 2025/07/20 改寫為 MariaDB 並最佳化(ChatGPT+DeepSeek)
*/
BEGIN
DECLARE v_userid VARCHAR(100);
DECLARE v_sql TEXT;
-- 根據傳入的 token 取得 userid
SELECT userid INTO v_userid FROM sys_users WHERE token = p_token LIMIT 1;
-- 設置默認返回值
SELECT 0 AS code, 'ok' AS msg;
-- 構建動態SQL
IF v_userid IS NULL OR v_userid = '' THEN
-- 無效token時返回空結果
SET v_sql = CONCAT('SELECT * FROM ', p_tablename, ' WHERE 1=0');
ELSE
-- 有效token時返回完整數據
SET v_sql = CONCAT('SELECT * FROM ', p_tablename);
END IF;
-- 執行動態SQL
SET @dynamic_sql = v_sql;
PREPARE stmt FROM @dynamic_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;