首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用机器人框架运行存储过程包括sql脚本

使用机器人框架运行存储过程包括sql脚本
EN

Stack Overflow用户
提问于 2022-03-23 05:39:54
回答 1查看 223关注 0票数 0

我想运行sql脚本,其中包括db和表创建以及存储过程创建。但是当我尝试使用执行sql脚本关键字在数据库库中运行sql脚本时,我会得到一个错误,如下所示

代码语言:javascript
复制
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")

在过程之前,我有这样的分隔符

代码语言:javascript
复制
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文件运行时不会出现其他表创建语句的错误。

我搜索了这个,找不到任何相关的问题。我看到我们有call存储过程关键字。但是我希望将表创建和存储过程保存在同一个sql文件中,并且需要运行。我使用MariaDB来完成这个任务。

图书馆使用

  • pymysql
  • robotframework-databaselibrary

如果我使用HeidiSQL运行sql文件,则运行过程和分隔符时不会出现任何错误。这意味着没有sql错误。

,谁能告诉我怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-24 04:36:46

分隔符是只支持客户端的语句,服务器不支持它;因此出现错误。解决办法-放下它。

这是a question with very good answers,它是什么,为什么需要它。

简而言之,当您与客户机一起工作时,您需要一种方法来指示它:“这不是您应该立即执行的语句,这仍然是您要发送到服务器的SP中的一行”--所以您告诉(客户端)“分隔符b/n语句是临时的$$”。服务器不需要/关心这一点-它知道CREATE PROCEDURE, BEGIN, END之间的所有东西都是连接的语句,一个块。

当您通过API (pymysql)与交互式客户端(shell、heidisql等)连接到DB时--您将SP作为一个块发送,不可能一个接一个地运行它的语句,因此不需要划界器,而不是服务器支持的命令,并生成一个错误。放下。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71582315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档