使用机器人框架执行包含 SQL 脚本的存储过程
<p>我想运行包含数据库和表创建以及存储过程创建的sql脚本。
但是当我尝试使用<strong>execute sql script</strong>关键字在<strong>database library</strong>中运行sql脚本时,我会得到以下错误:</p>
<pre class="brush:php;toolbar:false;">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")</pre>
<p>在存储过程之前,我有这样的<strong>delimiter</strong>:</p>
<pre class="brush:php;toolbar:false;">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 ;</pre>
<p>如果我注释掉存储过程部分,sql文件将在其余的表创建语句中运行而不会出错。</p>
<p>我在谷歌上搜索了一下,没有找到相关的问题。我看到我们有调用存储过程的关键字。但是我想把表创建和存储过程放在同一个sql文件中并运行。我在这个任务中使用的是MariaDB。</p>
<p><strong>使用的库</strong>:</p>
<ul>
<li>pymysql</li>
<li>机器人框架数据库库</li>
</ul>
<p>如果我使用HeidiSQL运行sql文件,它将在存储过程和分隔符中运行而不会出现任何错误。这意味着没有sql错误。</p>
<p><strong>有人能告诉我如何解决这个问题吗?</strong></p>