Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了oracle 导出查询结果至CSV大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

使用oracle存储过程实现查询结果导出至csv文件中。调用过程时,需要在oracle服务器上定义目录(已经存在的目录)。


create or replace PROCEDURE PX_SYS_IMP_CSV(V_sql IN VARCHAR2,V_DIR IN VARCHAR2,V_filename IN VARCHAR2)

IS V_file UTL_file.file_TYPE; V_CURSOR INTEGER DEFAulT DBMS_sql.OPEN_CURSOR; V_Col_VALUE VARCHAR2(4000); V_Col_CNT NUMBER := 0; V_SEParaTOR CHAR(1); V_TAB_DESC DBMS_sql.DESC_TAB; V_STATUS INTEGER; V_MAX_linesIZE NUMBER := 32000; BEGIN --OPEN file V_file := UTL_file.FOPEN(V_DIR,V_filename,'W',V_MAX_linesIZE); EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''YYYY-MM-DDHH24:MI:SS'''; --OPEN CURSOR DBMS_sql.PARSE( V_CURSOR,V_sql,DBMS_sql.NATIVE ); DBMS_sql.DESCRIBE_ColUMNS( V_CURSOR,V_Col_CNT,V_TAB_DESC ); --DUMP table ColUMN name FOR I IN 1 .. V_Col_CNT LOOP UTL_file.PUT( V_file,V_SEParaTOR || '"' || V_TAB_DESC(I).Col_name ||'"' ); DBMS_sql.define_ColUMN( V_CURSOR,I,V_Col_VALUE,4000 ); V_SEParaTOR := ','; END LOOP; UTL_file.NEW_liNE( V_file ); --EXECUTE THE query STATEMENT V_STATUS := DBMS_sql.EXECUTE(V_CURSOR); --DUMP table ColUMN VALUE WHILE ( DBMS_sql.FETCH_ROWS(V_CURSOR) > 0 ) LOOP V_SEParaTOR := ''; FOR I IN 1 .. V_Col_CNT LOOP DBMS_sql.ColUMN_VALUE( V_CURSOR,V_Col_VALUE ); UTL_file.PUT( V_file,V_SEParaTOR || '"' || TRIM(BOTH ' ' FROM REPLACE(V_Col_VALUE,'"','""')) ||'"'); V_SEParaTOR := ','; END LOOP; UTL_file.NEW_liNE( V_file ); END LOOP; --CLOSE CURSOR DBMS_sql.CLOSE_CURSOR(V_CURSOR); --CLOSE file UTL_file.FCLOSE( V_file ); END PX_SYS_IMP_CSV ;

大佬总结

以上是大佬教程为你收集整理的oracle 导出查询结果至CSV全部内容,希望文章能够帮你解决oracle 导出查询结果至CSV所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: