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的主要内容,如果未能解决你的问题,请参考以下文章

布尔值不适用于 If 语句(Javascript)

MSSql - 选择语句不适用于所有列

SQL 语句不适用于 Oracle JDBC

为啥相同的语句不适用于 C++ 中的类成员?

React setState 不适用于 if 语句

Php pdo rollBack() 不适用于更新语句