ad eseguire un file di script sql da ANT funziona benissimo con la seguente operazione:ANT sql task: come eseguire SQL e PL/SQL e si nota un errore di esecuzione?
<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}" />
Ma se il file sql non contiene solo SQL puro, ma anche PL/SQL il compito avrà esito negativo. Questo potrebbe essere risolto utilizzando il seguente frammento:
<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}" />
Ma se il mio script contiene sia SQL e PL/SQL allora né compito ANT funzionerà. Un'altra soluzione potrebbe essere quella di utilizzare l'attività "exec" con "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>
Ma purtroppo questo compito potrà mai fallire, quindi l'accumulo ritorna sempre con "di successo", anche se l'esecuzione dello script SQL non è riuscita. La proprietà error che ho provato a impostare non restituirebbe alcun codice di errore.
Qualche idea/suggerimento su come risolvere questo problema?
Grazie,
Peter
Ho provato a sostituire il punto e virgola con la barra e funziona correttamente. Tuttavia, ho un paio di pacchetti che creo script che ho con semi-colon. Se sostituisco i semi-punti con slash ant esegue script SQL con successo ma tutti i pacchetti sono creati con errori di compilazione a causa dell'errore 'Simbolo incontrato /' Ci sono dei modi per risolvere questo problema? Grazie – user75ponic