【问题标题】:SQL script create stored procedure - importing error [duplicate]SQL脚本创建存储过程-导入错误[重复]
【发布时间】:2018-04-08 04:36:28
【问题描述】:

我的 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 中阅读了几篇关于类似错误的帖子,但我无法解决。

有解决这个问题的解决方案,但帮助不大,因为最后我只想使用“我的数据库名称.sql”脚本,包括所有创建表、插入行......等等,当然还有创建过程,一切合二为一,简单的可导入文件。

我试过了:

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

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

感谢您的帮助:)

【问题讨论】:

  • 你没有在phpMyAdmin中使用DELIMITER语句,而是在对话框字段中输入分隔符。

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


【解决方案1】:

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

   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 是您要在其中创建存储过程的数据库名称

【讨论】:

  • 您的解决方案没有给我任何错误! :) 谢谢。
猜你喜欢
  • 2011-03-18
  • 2012-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 2012-04-24
相关资源
最近更新 更多