执行一个.SQL脚本文件从ANT它使用下面的任务正常工作:ANT 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}"
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任务会工作。另一个解决方案是使用“执行”任务与“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脚本执行失败。我试图设置的错误属性不会返回任何错误代码。
任何想法/建议如何解决这个问题?
感谢,
彼得
我试着用斜线替换分号,它工作正常。不过,我有几个包装创建脚本,我用分号冒号。如果我用斜杠替换分号,ant会成功执行sql脚本,但是所有的包都是由编译错误创建的,因为错误'遇到的符号/'有没有什么办法可以解决这个问题?谢谢 – user75ponic 2012-11-08 12:20:46