我正在Oracle中进行导出过程。在表中,特殊字符如&#201,&#233,&#235等存储。当我导出这些字符时,如何转换为其原始值?
我正在使用UTL_FILE函数导出到csv。程序是
PROCEDURE PROC_FILE_WRITE_TEST(p_dir IN VARCHAR2,p_filename IN VARCHAR2)
IS
v_fh utl_file.file_type;
c NUMBER;
d NUMBER;
v_ret NUMBER;
col_cnt INTEGER;
rec_tab DBMS_SQL.DESC_TAB;
BEGIN
v_fh := utl_file.fopen(p_dir, p_filename, 'W' ,32767 );
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'query here', DBMS_SQL.NATIVE);
DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);
d := DBMS_SQL.EXECUTE(c);
LOOP
v_ret := DBMS_SQL.FETCH_ROWS(c);
EXIT WHEN v_ret = 0;
UTL_FILE.NEW_LINE(v_fh, 1);
FOR j in 1..col_cnt
LOOP
UTL_FILE.PUT(v_fh,v_v_val||'|');
END LOOP;
END LOOP;
DBMS_SQL.CLOSE_CURSOR(c);
UTL_FILE.FCLOSE(v_fh);
END PROC_FILE_WRITE_TEST;
下面是例子。
表格数据:
Café and bars
CSV:
咖啡厅和酒吧
答案 0 :(得分:2)
由于几乎不提供任何信息,因此很难为您提供帮助。但是,UNESCAPE_REFERENCE可能会为您提供帮助。
select UTL_I18N.UNESCAPE_REFERENCE ( 'Café and bars') as txt
from dual;
TXT
=====================
Café and bars