39 lines
950 B
Plaintext
39 lines
950 B
Plaintext
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 ;
|