I was looking for the way how to deploy Oracle PL/SQL from ant or execute more sql commands that are specified in file. Solution is quite simple, but I did’nt find it in Google.
The trick is to use two attributes of the <sql/> task. This attributes are:
delimiter="/"– this specifies delimiter of the commandsdelimitertype="row"– sthis specifies that the delimiter is row type.
Example of the ant task is
<target name="installPLSQL" depends="check-fab"> <echo message="INSTALLING PL/SQL: ${db.driver} ${db.url}" /> <sql driver="${db.driver}" url="${db.url}" userid="${db.user}" password="${db.pw}" onerror="continue" print="true" delimiter="/" delimitertype="row"> <classpath refid="master-classpath" /> <fileset dir="plsql"> <!-- compile package specification first --> <include name="package_h.pls"/> <!-- compile package body --> <include name="package_b.pls"/> </fileset> </sql> </target>
Example of the package_h.pls is
CREATE OR REPLACE PACKAGE myPackage AS ... END; /
Example of the package_b.pls is
CREATE OR REPLACE PACKAGE BODY myPackage AS ... END; /
You can also create tables or execute more SQL commands from the file. Only need is to use / (or other delimiters, but slash is the standard in SQL*Plus) to separate the commands.
CREATE TABLE myTable1 (... ); / CREATE TABLE myTable2 (... ); /