使用Liquibase运行PLSQL外部脚本

时间:2014-12-04 16:02:59

标签: sql oracle plsql oracle-sqldeveloper liquibase

我正在使用Liquibase来管理SQLdeveloper中的数据库。现在,我们有一个可以自行运行的PLSQL脚本。它还会在数据库中进行更改。现在,如果我们希望Liquibase运行此PLSQL脚本,则会收到以下错误:ORA-00922:缺少选项或无效选项。

Liquibase甚至可以运行外部PLSQL脚本吗?

1 个答案:

答案 0 :(得分:2)

您遇到两个潜在问题:

  1. 您正在使用<sqlFile>但未指定splitStatements="false"。默认情况下,Liquibase会以分号分割SQL,因为这是JDBC驱动程序通常需要的,但在PL / SQL脚本中,您可以使用单个CREATE PROCEDURE或类似的包含分号但仍然是一个语句的东西。您也可以使用<createProcedure>而不是不拆分语句的sqlFile。

  2. 您的脚本中包含特定于sqlplus的功能。 SQLPlus和SQLDeveloper并不是简单地将SQL字符串直接传递给数据库,它们有自己的功能来有时修改实际执行的内容。 JDBC和Liquibase没有所有相同的功能,所以如果你在脚本中使用它们将无法工作。如果是这种情况,最好的方法是使用带<executeCommand>的changeSet来调用sqldeveloper或sqlplus。