執行一個.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