我想将一个简单的SQL查询(例如:select SP_NUMBER from SERVICE_PACK
)的结果提供给我的ant脚本(使用sql
任务)回到ant属性(例如{ {1}})。
service.pack.number
任务可以输出到文件,但有更直接的方法吗?
答案 0 :(得分:8)
虽然我宁愿不创建文件,但最终还是采用了以下解决方案:
sql任务调用如下
<sql ... print="yes" output="temp.properties"
expandProperties="true" showheaders="false" showtrailers="false" >
<![CDATA[
select 'current.sp.version=' || NAME from SERVICE_PACK;
select 'current.major.version=' || NAME from VERSION;
]]>
</sql>
生成的属性文件将包含:
current.sp.version=03
current.major.version=5
然后你只需加载属性文件并删除它:
<property file="temp.properties" />
<delete file="temp.properties" />
<echo message="Current service pack version: ${current.sp.version}" />
<echo message="Current major version: ${current.major.version}" />
这很有效,蚂蚁脚本中的一切都是正确的(即使它不是世界上最漂亮的东西!)。
答案 1 :(得分:1)
也许Ant exec任务在这里更有用?您可以执行独立操作,并通过outputproperty
在属性中获取结果。不幸的是,你必须以某种独立的方式执行SQL。
或者值得查看Ant Sql任务的代码并修改它以接受outputproperty
?这听起来有点痛苦,但我认为如果你找不到更直接的东西,这可能是一个非常简单的修改。
答案 2 :(得分:0)
MySQL用户 - 我必须像这样修改查询:
SELECT CONCAT('mytable.id=', CAST(ID as CHAR)) from mytable
没有CONCAT功能,我只是在属性文件中找回了文本“1”(代表我的id)。此外,在MySQL系统中需要CAST,否则连接字段将作为BLOB返回。