gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 20:49:43 24 4
gpt4 key购买 nike

要从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com