我有以下SQL程序:
DELIMITER $$
CREATE PROCEDURE Do_Stuff()
LANGUAGE SQL
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS users_temp AS (
SELECT id FROM users);
DECLARE i INT DEFAULT 0;
END;
$$
DELIMITER ;
出现错误:“您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在第8行'DECLARE i INT DEFAULT 0; END'附近使用正确的语法”
现在,如果我删除临时表,它运行正常。
DELIMITER $$
CREATE PROCEDURE Do_Stuff()
LANGUAGE SQL
BEGIN
DECLARE i INT DEFAULT 0;
END;
$$
DELIMITER ;
此外,如果我在程序中声明除了其他声明,它运行正常。
DELIMITER $$
CREATE PROCEDURE Do_Stuff()
LANGUAGE SQL
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS users_temp AS (
SELECT id FROM users);
SELECT * FROM users;
END;
$$
DELIMITER ;
可能导致此语法错误的原因是什么?
答案 0 :(得分:2)
答案 1 :(得分:1)
尝试:
DELIMITER $$
CREATE PROCEDURE Do_Stuff()
LANGUAGE SQL
BEGIN
DECLARE i INT DEFAULT 0;
CREATE TEMPORARY TABLE IF NOT EXISTS users_temp AS (
SELECT id FROM users);
-- DECLARE i INT DEFAULT 0;
END$$
DELIMITER ;