Plsql 语句不适用于 ANT
Posted
技术标签:
【中文标题】Plsql 语句不适用于 ANT【英文标题】:Plsql statements not working with ANT 【发布时间】:2013-03-08 09:17:30 【问题描述】:我有一个包含以下内容的文件:
-- KERNEL72 - SWIFT Silver 更改开始
/*
删除同义词 ispkss_vals /
为 ispks_vals 创建同义词 ispkss_vals /
*/-- KERNEL72 - SWIFT Silver 更改在以下行之后结束
为 ispks_vals 创建或替换同义词 ispkss_vals /
这是在 SQL Plus 中正确编译的。但是在使用 ANT 编译时,出现以下错误:
[sql] Failed to execute:
[sql] -- KERNEL72 - SWIFT Silver 更改开始 [sql] /* [sql] 删除同义词 ispkss_vals [sql] java.sql.SQLException: 无效的 SQL 类型 [sql] 执行失败: [sql] 为 ispks_vals 创建同义词 ispkss_vals [sql] java.sql.SQLSyntaxErrorException: ORA-00955: 名称已被现有对象使用 [sql] 执行失败: [sql] */-- KERNEL72 - SWIFT Silver 更改在以下行之后结束 [sql] 创建或替换 ispks_vals 的同义词 ispkss_vals [sql] java.sql.SQLSyntaxErrorException: ORA-00900: 无效的 SQL 语句
我使用以下 ANT 脚本进行编译:
<sql driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@10.184.1.13:1521:UPP"
userid="$UsernameB"
password="$PasswordB"
onerror="continue"
strictDelimiterMatching="false"
delimiter="/"
keepformat="yes">
请告知为什么 ANT 编译不正确。
【问题讨论】:
如果你明确使用/
作为分隔符,为什么还要指定delimiter=";"
?
对不起。复制代码时出现错误。分隔符是 / only。以上更正。
您是否尝试过不带标头运行脚本?因为它似乎忽略了注释符号并执行了冗余语句。此外,注释掉代码并不能很好地替代体面的源代码管理和干净的代码库。
【参考方案1】:
也许问题在于您使用/
作为语句分隔符并且还尝试使用/* ... */
进行评论?
它可能将注释打开和关闭视为分隔符,创建没有意义的 sql 语句。 (以*
等开头)
【讨论】:
这似乎是最有可能的答案。以上是关于Plsql 语句不适用于 ANT的主要内容,如果未能解决你的问题,请参考以下文章