【问题标题】:Flyway give ORA-00900 when I try to EXEC stored procedure from package当我尝试从包中执行存储过程时,Flyway 给出 ORA-00900
【发布时间】:2018-04-18 11:16:50
【问题描述】:

我有一些 oracle sql 脚本,它们可以从 SQLDeveloper 或 SQLPlus 完美运行。现在我想实现 Flyway 工具来控制数据库迁移。但是当我尝试执行以下字符串时

EXEC USERNAME.PA_SECURITY.SP_TBL_PLC_ADD('V_NAME', USERNAME.PA_SECURITY.POLICY_NAME);

我收到错误 ORA-00900:无效的 SQL 语句。 从 flyway 文档中,我看不到使用 SP 的任何限制。但我不明白,我的 SQL 有什么问题。它可以与其他工具一起使用。

【问题讨论】:

  • exec 是 SQL*Plus(或 SQL Developer)命令,它不是常规的 SQL command。您不能通过 JDBC(我认为 Flyway 正在使用)执行它。您需要将其包装到匿名 PL/SQL 块中(或说服 Flyway 使用 CallableStatement
  • 谢谢!它的作品

标签: oracle flyway


【解决方案1】:

正如 a_horse_with_no_name 解释我需要使用以下语法

BEGIN 
   USERNAME.PA_SECURITY.SP_TBL_PLC_ADD('V_NAME', USERNAME.PA_SECURITY.POLICY_NAME);
END;

即删除 EXEC 语句并添加“BEGIN ... END;”框架。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2016-10-09
    • 2018-07-08
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多