`
雨过天晴0521
  • 浏览: 159044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ant中执行oracle存储过程

 
阅读更多
同样的oracle dll脚本:

declare c int; begin
select count(*) into c from user_tables where table_name = upper('ACTIVESTARTTIMES');if c = 1 then execute immediate 'drop table "ACTIVESTARTTIMES" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('BASEEVENTFORMAT_CLASSIFIERS');if c = 1 then execute immediate 'drop table "BASEEVENTFORMAT_CLASSIFIERS" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('BASEEVENTFORMAT_PAYLOADIDS');if c = 1 then execute immediate 'drop table "BASEEVENTFORMAT_PAYLOADIDS" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('BASEEVENTFORMAT');if c = 1 then execute immediate 'drop table "BASEEVENTFORMAT" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('CLASSIFIERBEFMAP');if c = 1 then execute immediate 'drop table "CLASSIFIERBEFMAP" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('CLASSIFIERGROUPS');if c = 1 then execute immediate 'drop table "CLASSIFIERGROUPS" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('CLASSIFIER');if c = 1 then execute immediate 'drop table "CLASSIFIER" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('CLQUERYMODEL');if c = 1 then execute immediate 'drop table "CLQUERYMODEL" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('ECOMPID');if c = 1 then execute immediate 'drop table "ECOMPID" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('LGGINGPOLICYMESSAGE_PROPERTIES');if c = 1 then execute immediate 'drop table "LGGINGPOLICYMESSAGE_PROPERTIES" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('LOGGINGPOLICYMESSAGE');if c = 1 then execute immediate 'drop table "LOGGINGPOLICYMESSAGE" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('LOGGINGPOLICYMODEL_MESSAGES');if c = 1 then execute immediate 'drop table "LOGGINGPOLICYMODEL_MESSAGES" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('LOGGINGPOLICYPROPERTY');if c = 1 then execute immediate 'drop table "LOGGINGPOLICYPROPERTY" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('LOGSERVICE');if c = 1 then execute immediate 'drop table "LOGSERVICE" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('OTHERSITUATION_ANY');if c = 1 then execute immediate 'drop table "OTHERSITUATION_ANY" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('PAYLOADDATA');if c = 1 then execute immediate 'drop table "PAYLOADDATA" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('PAYLOAD');if c = 1 then execute immediate 'drop table "PAYLOAD" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('REPORTINGCOMPONENTID');if c = 1 then execute immediate 'drop table "REPORTINGCOMPONENTID" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('SITUATIONTYPE');if c = 1 then execute immediate 'drop table "SITUATIONTYPE" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('STATSCLASSIFIERS');if c = 1 then execute immediate 'drop table "STATSCLASSIFIERS" cascade constraints';c:=0;end if;
select count(*) into c from user_tables where table_name = upper('STATSCLASSIFIERS');if c = 1 then execute immediate 'drop table "STATSCLASSIFIERS" cascade constraints';c:=0;end if;
end;


在Ant中运行出现错误如下

06/08/12 14:22:59.800 INFO: [ProcessWrapper] [STDOUT] cleanup.db.logging:
06/08/12 14:23:00.232 INFO: [ProcessWrapper] [STDOUT]       [sql] Executing resource: /root/installation/DSEngine/work/silver-ion-ui-1/scripts/cleanupDDL/oracle/drop_commonlogging.ddl
06/08/12 14:23:00.247 INFO: [ProcessWrapper] [STDERR]       [sql] Failed to execute:  declare c int; begin select count(*) into c from user_tables where table_name = upper('ACTIVESTARTTIMES');if c = 1 then execute immediate 'drop table "ACTIVESTARTTIMES" cascade constraints';c:=0;end if
06/08/12 14:23:00.267 INFO: [ProcessWrapper] [STDERR]
06/08/12 14:23:00.268 INFO: [ProcessWrapper] [STDERR] BUILD FAILED
06/08/12 14:23:00.268 INFO: [ProcessWrapper] [STDERR] java.sql.SQLException: ORA-06550: line 1, column 201:
06/08/12 14:23:00.268 INFO: [ProcessWrapper] [STDERR] PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
06/08/12 14:23:00.268 INFO: [ProcessWrapper] [STDERR]
06/08/12 14:23:00.268 INFO: [ProcessWrapper] [STDERR]    ;

从错误上看是一行结尾没有';', 可是检查了一下, 每一行结尾, 还有文件结尾的确都有';', 把脚本放到DbVisualizer中执行没有问题, 但在Ant中运行为什么会找不到呢?
在网上查了一下,原来Ant默认使用分号来作为一条SQL语句结束, 所以原来的存储过程中的语句被分开执行了。我们希望SQL仍做为整体运行, 可以将delimiter为"/"或其他符号(:= . ( @ % ; not之一), 这样存储过程中就没有分隔符, SQL语句可以作为整体运行了.
注意, 只有oracle需要这样, 如果是sqlserver则不必加delimiter.当然加上也不会有问题.


    <target name="cleanup.db.logging" depends="replace.db.password" 
            description="Run ddl to cleanup commonlogging tables in external database for amx administrator">
       <sql
            driver="${admin.db.driver}"
            url="${admin.db.url}"
            userid="${admin.db.username}"
            password="${plaintext.password}"
            print="yes"
            delimiter="/">
           <classpath refid="jdbc.classpath"/>
           <transaction  src="./${db.ddl.path}/drop_commonlogging.ddl"/>
       </sql>
    </target>
分享到:
评论

相关推荐

    使用ant执行sql脚本重建oracle数据库

    总之,使用Ant执行SQL脚本重建Oracle数据库是一种高效的方法,尤其在需要自动化部署和维护数据库结构时。理解如何配置Ant的数据库连接、定义SQL任务以及处理可能出现的问题,对于提升开发效率和确保数据库一致性至关...

    自动备份Oracle并传输到远程FTP

    在我们的案例中,Ant脚本将负责调用RMAN命令行工具来执行Oracle备份,并将备份文件上传到远程FTP服务器。 以下是一个简单的Ant脚本示例,展示了如何集成RMAN和FTP: ```xml &lt;project name="OracleBackup" basedir=...

    Apache Ant 使用指南

    项目是构建的顶级容器,目标是构建步骤,任务是执行的具体动作,属性则是用于存储值并能在整个构建文件中重用。 2. **构建文件**:学习如何编写和组织build.xml文件,包括设置默认目标,定义属性,以及编写复杂的...

    ant-weblogic-1.6.1.jar.zip

    这个插件帮助开发者利用Apache Ant工具来管理和操作Oracle WebLogic Server,从而简化了在企业级Java环境中构建和部署应用的过程。开发者在使用这个包之前,需要确保满足所有依赖,并理解并接受许可文件中的条款。

    ant 1.9.4 打包

    任务是Ant执行的具体动作,如编译Java源码;属性存储可配置的值;目标是一系列任务的集合,可以被其他目标或直接通过命令行调用。 在开始安装Ant 1.9.4之前,确保你的系统已经安装了Java Development Kit (JDK)。...

    [转]使用Ant管理配置Weblogic

    当在Ant脚本中包含敏感信息(如密码)时,应考虑使用加密或安全存储机制,避免明文暴露。 10. **最佳实践**: - 将Ant脚本和WebLogic配置文件版本控制,确保团队成员使用相同配置进行构建。 - 使用Maven或Gradle...

    Oracle数据库应用之Shopping System

    2. **配置文件**:如`pom.xml`(Maven项目配置文件)或`build.xml`(Ant构建文件),定义了项目依赖和构建过程。还有可能有`web.xml`,是Web应用的部署描述符,用于配置Servlet和过滤器。 3. **数据库脚本**:`.sql...

    ant-jai-1.6.1.jar.zip

    总结来说,"ant-jai-1.6.1.jar.zip"是一个包含Ant扩展和JAI库的压缩包,用于在Java项目中执行图像处理任务。开发者在使用这个包时,需要解压并导入到他们的项目中,同时遵守"ant.license.txt"中规定的许可协议。这个...

    oracle JDeveloper 概述

    Oracle JDeveloper 旨在支持开发过程中的每一个步骤,从建模、编码、调试到测试、分析、优化和部署等所有环节,均在一个单一的 IDE 内通过一系列紧密集成的功能实现。此外,尽管 JDeveloper 主要定位为 Java 开发...

    Ant Peimer

    - **数据存储多样性:** 不同环境可能使用不同的数据库系统(如MySQL、SQL Server、Oracle等)。 #### 五、Ant在J2EE环境中的作用 - **简化构建与部署:** Ant能够自动化处理复杂的构建和部署过程,减少手动操作的...

    Oracle ADF开发实战指南

    - **构建工具**:例如Ant或Maven,用于自动化构建过程。 - **团队协作**:通过使用版本控制系统和持续集成/持续部署(CI/CD)工具来支持团队开发。 #### 五、JDeveloper IDE浏览 - **JDeveloper**是Oracle提供的集成...

    java+jsp+oracle实现基本的企业管理系统源码

    在本系统中,开发者可能使用了JDBC(Java Database Connectivity)来连接和操作Oracle数据库,执行SQL语句,如增删改查等操作。 4. 数据库设计:项目中可能涉及到多个数据库表,如用户表、部门表、职位表等,这些表...

    ant-eclipselink-schemagen-1.0.6.jar.zip

    在Java开发过程中,数据库的建模是至关重要的一步,它涉及到数据的存储结构设计,对应用的性能和扩展性有直接影响。Ant-EclipseLink-Schemagen-1.0.6.jar.zip是一个用于生成数据库模式的工具,它是Apache Ant任务和...

    TimesTen与oracle数据交互的测试

    根据给定的文件信息,我们可以深入探讨TimesTen与Oracle数据库之间的数据交互测试,以及在此过程中涉及的关键步骤和技术细节。此测试旨在验证TimesTen内存数据库与Oracle数据库之间通过CacheConnector进行数据交换的...

    Oracle Solaris 11.2 Setting Up the Application Development Envir

    在安装过程中,确保选择包含开发工具的软件包,如编译器、调试器和其他必要的库,这些工具对软件开发至关重要。 一旦操作系统安装完成,你需要配置开发环境。这通常包括设置环境变量,例如PATH、LD_LIBRARY_PATH和...

    voltdb集群资源包

    2. **安装Apache Ant**:解压`apache-ant-1.9.14-bin.tar.gz`,将其添加到PATH,以便在任意目录下执行Ant命令。 3. **安装Voltdb**:解压`voltdb-voltdb-9.1.tar.gz`,并根据官方文档配置Voltdb环境。 4. **创建...

    移动ssh项目(struts+spring+hibernate+oracle)130222.zip

    在这个项目中,Oracle作为后端数据存储,提供数据持久化服务。开发者可能使用Hibernate的Oracle dialect来适配特定的Oracle数据库特性。 **项目结构与组件**: - **源代码**:包括了各个模块的Java源文件,如Action...

    jBPM开发入门指南(2)[归类].pdf

    然后,获取jBPM的启动包,例如jbpm-starters-kit-3.1.1,进入jbpm-db目录,执行特定于MySQL的Ant命令(ant mysql.scripts),这将在指定目录下生成SQL脚本。执行这些脚本(如mysql.create.sql)将在"jbpm"库中创建所...

    JAVA 开发移动ssh项目(struts+spring+hibernate+oracle)130222.zip

    在SSH项目中,Oracle作为数据存储,Hibernate会通过JDBC(Java Database Connectivity)接口与Oracle进行通信,执行CRUD(Create, Read, Update, Delete)操作。 在压缩包文件名称列表中提到的"JAVA 开发移动ssh...

Global site tag (gtag.js) - Google Analytics