2

我正在尝试通过 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

编辑:

看来不是括号,而是空格。这是我从道具文件> bash脚本参数传入的内容:

ddaquery1=SELECT COUNT,marketsectordescription 从产品组按市场扇区描述排序按市场扇区描述

ddaquery2=从发行者选择计数(不同(smci))

这是进入 java 应用程序的内容:

ddaquery1:选择 ddaquery2:计数,

空格分隔字符串并使空格后的每个单词成为单独的 arg[]。有谁知道我该如何解决这个问题?

谢谢

4

2 回答 2

2

您的查询对我来说似乎很好。考虑到不是一个错字,它失败的原因是,你在COUNT(1)throw之后有SQLSyntaxErrorException

DDAQUERY1 = SELECT COUNT(1),  marketsectordescription FROM PRODUCT 
                           ^   GROUP BY marketsectordescription 
                               ORDER BY marketsectordescription
于 2013-05-31T19:15:20.283 回答
1

解决方案涉及在 bash 脚本中传递的参数没有被引用,因此将空格后面的每个单词作为新参数传递,并将错误的字符串提供给 java 应用程序中的查询变量。

于 2013-06-03T17:32:45.167 回答