Довольно поздно, наверное, - но я надеюсь, что это кому-нибудь поможет:
В общем, я думаю, что мы должны предпочесть использование sql, а не exec executetable = "sqlplus" по многим причинам, например: в случае, если мы меняем поставщика БД, вы не тратите ресурсы в новом процессе с sql, "STOPPING "будет работать в отличие от sqlplus.exe и т. д.
В любом случае, вот предложение о том, как разрешить PL / SQL и SQL в одном скрипте, чтобы он работал:
myScript.sql:
<copy todir="...">
<fileset dir="...." includes="myScript.sql"/>
<filterchain>
<replaceregex byline="false" pattern=";" replace="{line.separator}/" flags="mg"/>
<replaceregex byline="false" pattern="/[\s]*/" replace=";${line.separator}/" flags="mg"/>
</filterchain>
</copy>
затем выдайте результат:
<sql delimeter="/" src="myScript.sql"/>
объяснения:
Если у вас есть обычные команды sql:
drop table x;
select blah from blue where bli=blee;
Они будут преобразованы в:
drop table x
/
select blah from blue where bli=blee
/
, что эквивалентно - и команда sql с разделителем "/" может их обработать.
С другой стороны,
BEGIN
blah
END;
/
будет преобразовано в:
BEGIN
blas
END/
/
и с использованием второго регулярного выражения - преобразовано обратно в
BEGIN
blas
END;
/
Так что все выигрывают! Ура!
Удачи.