sql-maven-plugin 中的 PL/SQL 脚本抛出无效的 SQL 语句

Posted

技术标签:

【中文标题】sql-maven-plugin 中的 PL/SQL 脚本抛出无效的 SQL 语句【英文标题】:PL/SQL script in sql-maven-plugin throws invalid SQL statement 【发布时间】:2018-02-07 02:05:56 【问题描述】:

我正在尝试使用 sql-maven-plugin 更新我的物化视图,但它说

Caused by: java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement
ORA-06512: at line 2

查询:

begin
    EXECUTE IMMEDIATE 'DBMS_MVIEW.REFRESH(''M_CUSTOMER'')';
end;

即使在这方面花费了数小时后,我也无法找出问题所在。提前致谢。

我要执行的查询不是简单的 DDL 查询,而是 DBMS_MVIEW 包或其他包。其他答案有 DDL 的解决方案,但没有包的解决方案。

项目结构

【问题讨论】:

您应该向我们展示实际的 Java 代码。 @TimBiegeleisen 该项目没有任何java代码。只是 POM 和 SQL 文件。我将更新目录结构。 Maven: PL/SQL script with sql-maven-plugin throws error PLS-00103的可能重复 【参考方案1】:

这里的间接级别不够或太多:-)

你要么想要:

begin
    DBMS_MVIEW.REFRESH('M_CUSTOMER');
end;

begin
    EXECUTE IMMEDIATE 'begin DBMS_MVIEW.REFRESH(''M_CUSTOMER''); end;';
end;

前者可能性最大。

【讨论】:

同意这一点。另外,OP不需要将分隔符设置为rowaccording to documentation吗? 同意。 Maven 不是我的菜 谢谢@ConnorMcDonald :)

以上是关于sql-maven-plugin 中的 PL/SQL 脚本抛出无效的 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sql-maven-plugin 创建 SQL 转储

sql-maven-plugin 为 H2 存储过程定义抛出 SQL 语法错误

如何在选择语句的“NOT IN”子句中使用逗号分隔的字符串列表作为 pl/sql 存储的函数参数

PL/SQL ORA-01422 SELECT INTO 错误,Oracle 匿名块(NOVA 环境)

将PL/SQL代码封装在机灵的包中

Windows 64位 安装Oracle instantclient 官方绿色版和PL/SQL Developer 总结