【发布时间】:2013-05-31 19:09:53
【问题描述】:
我正在尝试通过 bash shell 脚本将 sql 查询传递给 java 类,该脚本从外部 EnvFile.properties 获取查询。属性文件中的查询如下所示:
DDAQUERY1=SELECT COUNT(1), marketsectordescription FROM PRODUCT GROUP BY marketsectordescription ORDER BY marketsectordescription
查询失败并出现以下错误:
java.sql.SQLSyntaxErrorException: ORA-00936: missing expression
传递给脚本的值如下所示(如 Jenkins 的控制台输出窗口所示):
SELECT 'COUNT(1),' marketsectordescription FROM PRODUCT GROUP BY marketsectordescription ORDER BY marketsectordescription
括号似乎造成了某种问题,因为单引号 (') 出现在带括号的语句附近。这实际上是怎么回事?有什么办法可以解决这个问题?
使用以下 Jenkins 插件将 env 变量注入到构建中: https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin
编辑:
看来不是括号,而是空格。这是我从 prop 文件 > bash 脚本参数传入的内容:
ddaquery1=SELECT COUNT,marketsectordescription FROM PRODUCT GROUP BYmarketsectordescription ORDER BYmarketsectordescription
ddaquery2=select count(distinct(smci)) from issuer
以下是进入 java 应用程序的内容:
ddaquery1:选择 ddaquery2:计数,
空格分隔字符串并使空格后的每个单词成为单独的 arg[]。有谁知道我该如何解决这个问题?
谢谢
【问题讨论】:
-
我可以建议您编辑您的问题,以便您提及您使用的 jenkins 插件吗?正如我在一篇文章中提到的,这可能是由于这个插件自动引用了包含 shell 元字符的“单词”。
-
@fge 我正在考虑删除我的答案,因为它不能解决 OPs 问题,但我担心丢失可能对某人提供正确解决方案有用的 cmets。
-
@Smit 不要... 您可以对其进行编辑,以便参考正在进行的扩展讨论。不幸的是,我没有测试环境。