Java 使用oracle格式化查询结果

Java 使用oracle格式化查询结果,java,sql,oracle,Java,Sql,Oracle,我想在oracle中格式化查询结果并将其保存到输出文件中 我尝试了以下查询: spool "result.txt" SELECT STA_CODE,DATE_CREATION,DATE_FIN_INSTANCE,DATE_FIN_TRAITEMENT FROM DEMANDE; spool off; 在我的输出文件中,结果如下所示: STA_CODE DATE_CRE DATE_FIN DATE_FIN -------------------------

我想在oracle中格式化查询结果并将其保存到输出文件中

我尝试了以下查询:

spool "result.txt"
SELECT STA_CODE,DATE_CREATION,DATE_FIN_INSTANCE,DATE_FIN_TRAITEMENT  FROM DEMANDE;
spool off;
在我的输出文件中,结果如下所示:

STA_CODE                  DATE_CRE DATE_FIN DATE_FIN

------------------------- -------- -------- --------

200                       09/05/17 09/05/17 09/05/17 

400                       09/05/17 09/05/17 09/05/18
然后我想编写一个java代码,为每一行获取结果,并将其与列的名称匹配:例如STA_代码=200,STA_代码=400,DATE_CRE=09/05/17,DATE_CRE=09/05/18。。。。
我是JAVA的biginner,我不会写那么多代码。可以直接格式化查询结果,然后解析输出文件,而无需使用java进行任何转换

如果要将每行分开,请使用

SELECT 'STA_CODE='||STA_CODE
 ||', DATE_CRE=' ||to_date(DATE_CREATION,'DD/MM/YY')---other values 
from DEMANDE
如果您希望所有的STA_代码、所有的DATE_CRE和其他列都在一行中,用逗号分隔,请使用

select listagg(col1,', ') within group (order by seq)
from (
SELECT 1 as seq,'STA_CODE='||STA_CODE as col1 from DEMANDE
union
SELECT 2 as seq,'DATE_CRE='||to_date(DATE_CREATION,'DD/MM/YY') from DEMANDE
union 
---- other select queryies separated by union.

)

注意:您不能保证每行之间的顺序。所以可能会发生第二个STAU代码排在第一位,第一个DATE CRE排在第二位的情况。若要计算该值,请在所有联合查询中按列排序。

不确定您希望查询的输出外观如何。是所有的STA_代码值,然后是所有的DATE_CRE值等等吗?是的。。看起来没问题,谢谢!