0

我正在使用以下 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 创建或替换同义词 CIVWS;
/

上面的编译失败并出现以下错误。

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

我知道分隔符是 / ,因此 sql 语句后的分号导致了问题。像这样的文件有数百个,都可以在 sqlplus 中正确编译。但是使用 jdbc 失败。我现在无法更改代码。是否有任何解决方法。我无法将分隔符更改为 ; 还。请建议。

4

1 回答 1

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

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

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

于 2013-11-19T13:40:48.553 回答