我试图将两个存储过程的表结果存储到phpmyadmin例程窗口中的单个表中,这给了我mariadb语法错误。分别调用存储过程可以得到结果。
存储过程代码
BEGIN
CREATE TABLE temp(Name VARCHAR(200), Value1 varchar(100), Value2 varchar(100))
INSERT INTO temp CALL stored_procedure1();
INSERT INTO temp CALL stored_procedure2();
END
此代码给出了以下语法错误
以下查询失败:
"CREATE DEFINER=`root`@`localhost` PROCEDURE `get_data`() NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER BEGIN CREATE TABLE temp(Name VARCHAR(200), Value1 varchar(100), Value2 varchar(100)) INSERT INTO temp CALL stored_procedure1(); INSERT INTO temp CALL stored_procedure2(); END"
MySQL说:#1064 - 你的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以便在'INSERT INTO temp CALL stored_procedure1()附近使用正确的语法;
我尝试将TABLE temp的语法更改为TABLE #temp并添加;在create table语句的末尾没有解决它。
答案 0 :(得分:0)
首先,您应该将;
的默认分隔符更改为//
另外,我假设您忘记在此处添加CREATE PROCEDURE Something()
声明。
DELIMITER //
CREATE PROCEDURE Something()
BEGIN
CREATE TABLE temp(Name VARCHAR(200), Value1 varchar(100), Value2 varchar(100));
INSERT INTO temp CALL stored_procedure1();
INSERT INTO temp CALL stored_procedure2();
END//
DELIMITER ;