从迁移创建存储过程

时间:2016-09-08 10:24:02

标签: mysql stored-procedures go

我在GO中有一个项目,用于检查应用启动时是否有新的迁移应用(我正在使用库https://github.com/mattes/migrate)。

现在问题是我有一个存储过程要在其中一个迁移中创建(因为这将在稍后调用,我需要在迁移中创建它,否则测试套件当然会失败)。

可以是一个例子:

DELIMITER @@
    CREATE PROCEDURE get_value(my_id BIGINT(20), OUT out_value DOUBLE)
       BEGIN
         SELECT CASE
            WHEN o.financial_status = "test" THEN 0
            ELSE 1
            END
            INTO out_value
          FROM `order` o
          LEFT JOIN `my_table_2` io ON io.field_2 = o.id
          LEFT JOIN `my_table_3` ip ON io.field_3 = ip.id
          WHERE o.id = my_id;
END @@
DELIMITER ;

据我所知,这可能是不可能的,因为go的sql驱动程序不支持多语句(我们使用的是mysql 5.6)。

还有其他方法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

实际上,我遇到了同样的情况。我运行它的方式是删除所有分隔符声明并运行它。由于迁移过程中不需要分隔符,因此它将自动终止(或实际命名)并且应该运行迁移。