使用Ant进行Jdbc编译

时间:2012-12-08 04:02:13

标签: oracle ant sqlplus

我正在使用以下ant脚本进行jdbc编译。

<sql driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@10.184.133.133:1521:SUPP"
userid="${UsernameB}"
password="${PasswordB}"
onerror="continue"
delimitertype="row"
delimiter="/"
keepformat="yes">

我有一个包含以下内容的文件:

  

为CIVW创建OR REPLACE同义词CIVWS;
  /

上述编译失败,出现以下错误。

java.sql.SQLSyntaxErrorException: ORA-00911: invalid character

我知道分隔符是/因此在sql语句引起问题后的半冒号。有这样的数百个文件,都将在sqlplus中正确编译。但是jdbc失败了。我现在无法更改代码。对此有任何解决方法吗?我不能改变分隔符;也。请建议。

1 个答案:

答案 0 :(得分:0)

  1. 首先你可以尝试使用... delimiter=";" delimitertype="row" ...并确保包含“;”的pl / sql块被一些“;”分开。在一行(立即只有一个换行符 - 从而触发它作为单个语句执行)。

  2. 如果你不能添加“;”手动,尝试将源文件复制到某些tmp目录并尝试通过手动或通过一些自动正则表达式替换来更改它们(例如,使用带有regexp替换过滤器的ant copy任务)。 (例如,如果你幸运的话,用^(.*end\s*;?)(.*)$替换匹配\1\n;\n\2的行就足够了)

  3. 插入“;”的另一种解决方案 - 单行分隔符可以将这些块放在单独的文件中(可能是自动的)并通过<sql><transaction src="<yoursqlfile>.sql" /> <!--...--> </sql> <!--...-->" ANT任务执行它们。