使用oracle格式化查询结果

时间:2017-05-10 10:42:55

标签: java sql oracle

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

我尝试了这个查询:

process->start("stdbuf", QStringList() << "--output=L" << "/home/user/test.py");

在我的输出文件中,结果如下:

spool "result.txt"
SELECT STA_CODE,DATE_CREATION,DATE_FIN_INSTANCE,DATE_FIN_TRAITEMENT  FROM DEMANDE;
spool off;

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

1 个答案:

答案 0 :(得分:1)

如果您希望每行分开,请使用

SELECT 'STA_CODE='||STA_CODE
 ||', DATE_CRE=' ||to_date(DATE_CREATION,'DD/MM/YY')---other values 
from DEMANDE

如果您希望所有STA_CODE首先,然后全部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.

)

注意:您无法保证每行之间的订单。因此,第二个STA_CODE首先出现,第一个DATE_CRE成为第二个union。要为此提供服务,请按所有get_my_dep(empNum) 次查询中的列进行排序。