sql - ANT sql 任务 : How to run SQL and PL/SQL and notice execution failure?

标签 sql ant plsql

要从 ANT 执行 .sql 脚本文件,它可以使用以下任务正常工作:

<sql
    classpath="${oracle.jar}" driver="oracle.jdbc.OracleDriver"
    url="jdbc:oracle:thin:@@@{db.hostname}:@{db.port}:@{db.sid}" 
    userid="@{db.user}" 
    password="@{db.password}"
    src="@{db.sql.script}" />

但是,如果 .sql 文件不仅包含纯 SQL,还包含 PL/SQL,则任务将失败。这可以通过使用以下代码段来解决:
<sql
    classpath="${oracle.jar}" driver="oracle.jdbc.OracleDriver"
    url="jdbc:oracle:thin:@@@{db.hostname}:@{db.port}:@{db.sid}" 
    userid="@{db.user}" 
    password="@{db.password}"
    delimiter="/"
    delimitertype="row"
    src="@{db.sql.script}" />

但是如果我的脚本同时包含 SQL PL/SQL 那么这两个 ANT 任务都不起作用。另一种解决方案是将“exec”任务与“sqlplus”一起使用:
<exec executable="sqlplus" failonerror="true" errorproperty="exit.status">
    <arg value="${db.user}/${db.password}@${db.hostname}:${db.port}/${db.sid}"/>
    <arg value="@${db.sql.script}"/>
</exec>

但不幸的是,这个任务永远不会失败,因此即使 sql 脚本执行失败,构建也总是返回“成功”。我尝试设置的错误属性不会返回任何错误代码。

任何想法/建议如何解决这个问题?

谢谢,

彼得

最佳答案

彼得,

在脚本开头添加

  WHENEVER SQLERROR EXIT SQL.CODE;

然后 sqlplus 将以退出代码 != 0 退出。

关于sql - ANT sql 任务 : How to run SQL and PL/SQL and notice execution failure?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3363356/

相关文章:

Oracle:将数字转换为英语以外的其他语言的单词

sql - Magento:有没有办法将所有可配置产品设置为 "Not Visible Individually"

如果为 NULL,MySQL 更新/连接列,使用来自其他列的数据

java - 关于使用pathconvert Ant 任务的一些疑问。它做什么?

sql - 是否可以以 TO_CHAR(datetime) 格式插入文字字符?

json - 如何将 JSON 日期转换为本地时间的 Oracle 日期

mysql - SQL 计数和分组

mysql - 外键可以引用组合的唯一键吗?

Eclipse 中的 java.lang.NoClassDefFoundError,但 Ant 中没有

java - 如何对 netbeans 保存项目设置操作?