我想运行包含数据库和表创建以及存储过程创建的sql脚本。 但是当我尝试使用execute sql script关键字在database library中运行sql脚本时,我会得到以下错误:
ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DELIMITER $$\n CREATE OR REPLACE PROCEDURE `proc_GetCustomerDetails`(\n I...' at line 2")
在存储过程之前,我有这样的delimiter:
DELIMITER $$ CREATE OR REPLACE PROCEDURE `proc_GetCustomerDetails`( IN CustomerNbr LONGTEXT, IN Lang VARCHAR(5) ) DETERMINISTIC BEGIN IF Lang IS NULL THEN SET lang = "fin"; END IF; SELECT * from dbname.customer; END;$$ DELIMITER ;
如果我注释掉存储过程部分,sql文件将在其余的表创建语句中运行而不会出错。
我在谷歌上搜索了一下,没有找到相关的问题。我看到我们有调用存储过程的关键字。但是我想把表创建和存储过程放在同一个sql文件中并运行。我在这个任务中使用的是MariaDB。
使用的库:
如果我使用HeidiSQL运行sql文件,它将在存储过程和分隔符中运行而不会出现任何错误。这意味着没有sql错误。
有人能告诉我如何解决这个问题吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号