C# 将MySQL过程调用存储在.sql脚本文件中并执行

C# 将MySQL过程调用存储在.sql脚本文件中并执行,c#,mysql,stored-procedures,C#,Mysql,Stored Procedures,有可能按照标题所说的去做吗?因此,在实践中,我们已经为客户机设置了mysql数据库。我想给他们发送一个带有链接的.sql文件的可执行文件,该文件存储了一个过程,所以一旦他们运行这个脚本,它就会用脚本中的语句更新他们的数据库 我本来可以通过简单地使用诸如UPDATE和ADD(而不是存储过程)之类的mysql语句来实现这一点,将它们存储在一个sql文件中,并让我的c#app执行每一条语句,但是我无法在sql中使用我的案例所需的IF-ELSE条件。过程调用允许使用条件语句,但我不知道如何将它们存储在.

有可能按照标题所说的去做吗?因此,在实践中,我们已经为客户机设置了mysql数据库。我想给他们发送一个带有链接的.sql文件的可执行文件,该文件存储了一个过程,所以一旦他们运行这个脚本,它就会用脚本中的语句更新他们的数据库

我本来可以通过简单地使用诸如UPDATE和ADD(而不是存储过程)之类的mysql语句来实现这一点,将它们存储在一个sql文件中,并让我的c#app执行每一条语句,但是我无法在sql中使用我的案例所需的IF-ELSE条件。过程调用允许使用条件语句,但我不知道如何将它们存储在.sql文件中并执行它们


这可能吗?

是的,很可能。您希望在SQL脚本中执行的操作是创建存储过程,然后执行它(并可能在脚本末尾再次删除它)

下面是一个示例脚本:

DROP PROCEDURE IF EXISTS spMyProc;

DELIMITER //
CREATE PROCEDURE spMyProc()
BEGIN
  /* Do stuff */
END//
DELIMITER ;

CALL spMyProc();
DROP PROCEDURE spMyProc;
分隔符
命令用于确保常用语句分隔符
可以在存储过程的主体中使用,而不是在脚本中使用分隔语句

我在这里创建了一个SQLFiddle来演示,不过由于SQLFiddle中的限制,它没有使用分隔符命令


希望这能让你走上正轨。

在我发布这个问题的时候,我确实想到并实现了这个想法。但我没有想到最后会放弃这个程序,这会更好。谢谢酷,伟大的人都这么想:)谢谢你的接受!