DELIMITER // CREATE PROCEDURE sysexec ( IN p_token VARCHAR(100), IN p_sql TEXT ) BEGIN DECLARE v_userid VARCHAR(100); DECLARE v_exstr TEXT; -- 根據傳入的 token 取得 userid SET v_userid = ''; SELECT userid INTO v_userid FROM sys_users WHERE token = p_token; IF COALESCE(v_userid, '') = '' THEN SELECT 9 AS code, '請先登入系統再執行!!' AS msg; SELECT ''; ELSEIF LOCATE('delete ', p_sql) > 0 OR LOCATE('drop ', p_sql) > 0 THEN SELECT 4 AS code, '內含不允許執行的 SQL 語法, 請重新輸入?!' AS msg; SELECT ''; ELSE BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN SELECT 9 AS code, '語法有錯,請檢查語法後再重新執行!!' AS msg; SELECT ''; END; SELECT 0 AS code, '成功執行 SQL 語法' AS msg; SET @v_exstr = p_sql; PREPARE v_exstr FROM @v_exstr; EXECUTE v_exstr; END; END IF; END // DELIMITER ;