首页 > 解决方案 > sql文件无法验证多个存储过程

问题描述

所以一些背景我正在从我们的 CICD 管道设置一个 cloudformation 堆栈。这个堆栈设置了我们的整个数据库。我们有被触发的迁移文件,太棒了!到目前为止,这运行良好,我的数据库构建了我所有的视图和表,除了它没有构建我的程序,我一直在用头撞我的桌子试图找出原因。我查看了大量文档,我真的不明白为什么我所拥有的东西在我发现的文档和其他几个类似网站看起来完全一样时不起作用。

现在我相信我知道问题的原因,我目前正在使用 SQLPro 生成我的数据库的 SQL 转储,该转储用于我的 cicd 进程并被触发。我已经在 SQLPro 中运行了转储文件,它工作正常,但只是尝试从 sql 文件执行时不起作用,而不是在 SQLpro 中,而是在我们的 cicd 管道中。

我觉得这一定是一个非常简单的问题,我已经尝试了所有我能想到的尝试正确格式化的方式,但我真的不知道为什么它不起作用。我一直在在线使用 SQL 验证器,如果我放置一个存储过程,它说语法很好,但是当我有超过 1 个时,它就不行了。

这里以 2 个过程为例

CREATE PROCEDURE cropsByGrowerIdProc(IN userID Text)
BEGIN
  SELECT DISTINCT
    g.growerID AS growerID,
    g.firstName AS firstName,
    g.lastName AS lastName,
    z.zoneID AS zoneID,
    g.farmName AS farmName,
    g.email AS email,
    g.phoneNumber AS phoneNumber,
    u.userID AS userID,
    g.source AS source,
    json_object('cropID',c.cropID,'plantedAcreage',c.acres) AS crops
  FROM GrowerDICT g
  inner join UserGrowerTransaction u on (u.growerID = g.growerID AND u.userID = userID)
  left join CropTransaction c on (c.growerID = g.growerID)
  inner join ZoneTransaction z on(z.growerID = g.growerID)
  where (u.userID = userID AND g.isActive IS TRUE);
END;

CREATE PROCEDURE cropsByGrowerIdProc_OLD(IN userID Text)
BEGIN
  SELECT DISTINCT
    g.growerID AS growerID,
    g.firstName AS firstName,
    g.lastName AS lastName,
    z.zoneID AS zoneID,
    g.farmName AS farmName,
    g.email AS email,
    g.phoneNumber AS phoneNumber,
    u.userID AS userID,
    g.source AS source,
    json_object('cropID',c.cropID,'plantedAcreage',c.acres) AS crops
  FROM GrowerDICT g
  inner join UserGrowerTransaction u on (u.growerID = g.growerID)
  left join CropTransaction c on (c.growerID = g.growerID)
  inner join ZoneTransaction z on(z.growerID = g.growerID)
  where (u.userID = userID AND g.isActive IS TRUE AND c.isActive IS TRUE);
END;

是的,我在任何地方都试过 DELIMITER,它总是说you have an error in your sql syntax near CREATE PROCEDURE cropsByGrowerIdProc_OLD

再说一次,这就是我现在所拥有的,我尝试了许多其他的东西,比如分隔符、删除开始/结束、删除删除过程(如果存在)(也无法让它工作,并且在第一个创建存储过程行时出错而不是第二个没有 drop 过程调用)

标签: mysqlstored-procedures

解决方案


推荐阅读