key words: plsql,导出数据,大数据量
最近的账务的项目中需要导出Excel报表,数据量比较大,解决方案如下 :
1.通过plsql在服务器端查询出符合要求的纪录,然后直接写到文本文件中
2.在web端通过流的方式读文本文件,通过POI写到Excel,将生成的Excel流写到respoonse实现下载
这样做的好处是不必一次性将满足条件的纪录全部取出来,而是通过流的方式.
这个方式原来在处理Blob类型的字段时有直接的getStream来支持的,这次普通的数据只好通过文件的方式来实现.
贴一段sample的代码
sql 代码
 
    - create or replace procedure alex_table_to_txt(filepath varchar2,filename varchar2) is  
-   
- v1 alex2.name%type;  
- v2 alex2.address%type;  
- v3 alex2.groupname%type;  
-   
- output varchar2(200);  
-   
-   
- file_handle UTL_FILE.FILE_TYPE;  
-   
- cursor readtable is select t.name,t.address,t.groupname from alex2 t;  
- begin  
- file_handle:=utl_file.fopen(filepath,filename,'w',6000);  
- open readtable;  
-   
- loop  
- fetch readtable into v1,v2,v3;  
- exit when readtable%notfound;  
- output:=v1 || ',' || v2 || ',' || v3 ;  
- utl_file.put_line(file_handle,output);  
-   
- end loop;  
-   
- close readtable;  
- utl_file.fclose(file_handle);  
- end alex_table_to_txt;  
- /  
 
 
欢迎讨论你的方案