首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven:带有sql-maven-plugin的PL/SQL脚本抛出错误PLS-00103

Maven:带有sql-maven-plugin的PL/SQL脚本抛出错误PLS-00103
EN

Stack Overflow用户
提问于 2011-09-28 16:11:46
回答 1查看 8.9K关注 0票数 11

我正在尝试使用sql-maven-plugin在Oracle11数据库上执行PL/SQL脚本。尽管该脚本是有效的PL/SQL (据我所知),但执行过程给出了一个PLS-00103错误:

SQL脚本:(drop_all_tables.sql)

代码语言:javascript
复制
BEGIN
   EXECUTE IMMEDIATE 'DROP TABLE MY_TABLE';
   EXCEPTION
   WHEN OTHERS THEN
      IF SQLCODE != -942 THEN
         RAISE;
      END IF;
END;

和我的插件配置:

代码语言:javascript
复制
<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sql-maven-plugin</artifactId>
            <version>1.5</version>

            <dependencies>
                <dependency>
                    <groupId>oracle</groupId>
                    <artifactId>jdbc</artifactId>
                    <version>11.2.0.2.0</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <id>create-schema</id>
                    <phase>process-test-resources</phase>
                    <goals>
                        <goal>execute</goal>
                    </goals>
                    <configuration>
                        <driver>oracle.jdbc.driver.OracleDriver</driver>
                        <url>${jdbc.url}</url>
                        <username>${jdbc.username}</username>
                        <password>${jdbc.password}</password>
                        <autocommit>true</autocommit>
                        <srcFiles>
                            <srcFile>src/main/resources/sql/drop_all_tables.sql</srcFile>
                        </srcFiles>
                    </configuration>
                </execution>
            </executions>
        </plugin>

下面是Maven执行的输出:

代码语言:javascript
复制
[ERROR] Failed to execute:  BEGIN
EXECUTE IMMEDIATE 'DROP TABLE MY_TABLE';
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] ORA-06550: line 2, column 43:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

   ( begin case declare end exception exit for goto if loop mod
   null pragma raise return select update while with
   <an identifier> <a double-quoted delimited-identifier>
   <a bind variable> << continue close current delete fetch lock
   insert open rollback savepoint set sql execute commit forall
   merge pipe purge
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-28 20:46:08

我猜这个插件是在用分号拆分sql脚本,并试图独立地执行每个部分。第一个语句是

代码语言:javascript
复制
BEGIN
    EXECUTE IMMEDIATE 'DROP TABLE MY_TABLE';

对于oracle而言,这是不完整的。该插件确实有两个配置参数来更改此行为,delimiterdelimiterType。通过像下面这样更改配置,并在一行上用/分隔您的BEGIN块,您应该能够执行此脚本。

代码语言:javascript
复制
<configuration>
    <delimiter>/</delimiter>
    <delimiterType>row</delimiterType>
</configuration>
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7580165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档