43 lines
1.2 KiB
Plaintext
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 ; |