【问题标题】:Storing a MySQL procedure call in an .sql script file, and executing it将 MySQL 过程调用存储在 .sql 脚本文件中并执行它
【发布时间】:2016-06-08 03:17:35
【问题描述】:

是否可以如标题所说的那样做?所以在实践中,我们让我们的客户设置了他们的 mysql 数据库。我想向他们发送一个带有链接 .sql 文件的可执行文件,该文件存储一个过程,因此一旦他们运行此脚本,它将使用脚本中的语句更新他们的数据库。

我最初可以通过简单地使用 UPDATE 和 ADD 之类的 mysql 语句(不是存储过程),将它们存储在一个 sql 文件中,并让我的 c# 应用程序执行每个语句来做到这一点,但后来我无法使用我需要的 sql 中的 IF ELSE 条件。过程调用允许条件语句,但我不知道如何将它们存储在 .sql 文件中并让它们执行。

这可能吗?

【问题讨论】:

    标签: c# mysql stored-procedures


    【解决方案1】:

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

    这是一个示例脚本:

    DROP PROCEDURE IF EXISTS spMyProc;
    
    DELIMITER //
    CREATE PROCEDURE spMyProc()
    BEGIN
      /* Do stuff */
    END//
    DELIMITER ;
    
    CALL spMyProc();
    DROP PROCEDURE spMyProc;
    

    DELIMITER 命令用于确保在存储过程的主体中可以使用通常的语句分隔符;,而不是在脚本中分隔语句。

    我在这里创建了一个 SQL fiddle 来演示,尽管由于 SQL fiddle 的限制,它不使用 delimiter 命令。 http://sqlfiddle.com/#!9/752bf/1/0

    希望这能让你走上正轨。

    【讨论】:

    • 自从我发布问题以来,我实际上已经想到并实施了这个确切的想法。但我没想到最后放弃这个程序,这会更好。谢谢!
    • 酷,伟大的思想都一样 :) 感谢您的接受!
    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    相关资源
    最近更新 更多