SQL脚本创建存储过程 - 导入错误

时间:2017-10-26 17:24:49

标签: mysql sql stored-procedures phpmyadmin sql-scripts

我的SQL脚本(sproc.sql):

use timetable_db;

DROP PROCEDURE IF EXISTS GetEmptyClassrooms;

delimeter |
CREATE PROCEDURE GetEmptyClassrooms()
 BEGIN
   SELECT room_number,seats from classrooms WHERE room_number not in (SELECT room_number FROM timetable);
 END |

当我尝试通过phpmyadmin GUI将其导入MySQL时,我收到了错误:

  

命令的意外开始。 (位置0附近的“分隔符”)

抱歉,MySQL中的默认语言不是英语。我试着尽可能准确地翻译。

我在S.overflow上看过几篇关于类似错误的帖子,但我无法解决。

有解决方案可以解决这个问题,但帮助不大,因为最后我只想使用“my db name.sql”脚本,包括所有创建表,插入行等等,当然还有创建程序,一切都在一个,只是可导入的文件。

我试过了:

  • 删除分隔符语句,留下“|”或'//'或'$$'那里
  • 删除分隔符和分隔符 使用';'而不是'|'或'//'或'$$'
  • 删除分隔符;
  • 仅删除;
  • 删除标签 - >仅使用空格
  • 在mysql中尝试唯一的“SELECT ...”语句,它起作用,所以我认为不会是问题。

我真的是SQL的初学者,但我想提高自己。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:3)

我认为你使用的语法有错误。请尝试以下方式。

   DROP procedure IF EXISTS `GetEmptyClassrooms`;
        DELIMITER $$
        USE `test`$$
        CREATE PROCEDURE `GetEmptyClassrooms` ()
        BEGIN
         SELECT room_number,seats from classrooms
 WHERE room_number not in (SELECT room_number FROM timetable);
        END
        $$
        DELIMITER ;

其中 test 是您要在其中创建存储过程的数据库名称