Oracle生成CSV文件表头缺失、日期显示为########问题求助
解决方案
1. 表头添加失败修复
你的代码中表头变量l_attach_text_h的赋值语句存在语法错误:字符串未闭合单引号,也没有语句结束符,导致表头未正常生成。
修正代码如下:
-- 闭合字符串,删除字段名前后多余空格避免CSV识别异常 l_attach_text_h := 'RECORD_ID,INPUTTED DATE,INPUTTED BY,BROKER';
同时修改表头与内容的拼接逻辑,使用标准的Windows换行符(chr(13)||chr(10))避免不同办公软件打开时格式错乱:
l_clob := l_attach_text_h || chr(13) || chr(10) || l_clob;
2. 日期字段显示########修复
该问题有两个触发原因,可同时修复:
- Oracle DATE类型字段直接拼接字符串时会调用数据库默认日期格式,长度不固定,Excel打开后列宽不足就会显示为#
- 未指定固定日期格式,不同环境解析时会出现格式偏移
修正循环内的日期字段拼接逻辑,强制转换为固定格式字符串:
l_attach_text := '"' || employee_rec.FC_ED_RECORD_ID || '","' || -- 按你需要的日期格式调整格式串即可 to_char(employee_rec.FC_ED_UPLOADTIME, 'yyyy-mm-dd hh24:mi:ss') || '","' || employee_rec.FC_ED_USER_ID || '","' || employee_rec.FC_ED_BROKER || '","' ||
额外优化建议
如果你的数据量较大,直接用||拼接CLOB可能会出现性能问题或长度溢出,建议改用dbms_lob.append方法拼接内容。
内容的提问来源于stack exchange,提问作者Thejus32
相关产品推荐
相关产品推荐

