如何使用pl / sql创建ANSI编码的文本文件?

时间:2018-06-01 05:19:23

标签: sql database oracle plsql

我目前正在制作一个使用PL / SQL创建文本文件的过程。

但是,文本文件仅编码为UTF-8。但由于在MS Excel中使用,我需要成为ANSI编码的文本文件。 (如果在Excel上加载了UTF-8文件,则会丢失韩文字符。)

enter image description here

以下是我的来源。

我该如何解决这个问题?

  CURSOR SQL_CUR IS
        SELECT DATA_S VAR_DATA
        FROM A_TABLE ;



V_FILE := PARAM_A_NUM || '_' || PARAM_C_NUM || '.TXT';

V_OUTPUT := UTL_FILE.FOPEN('DIRECTORY', V_FILE, 'w');

  FOR V_CUR IN SQL_CUR LOOP

    V_RESULT := V_CUR.VAR_DATA;
    UTL_FILE.PUT_LINE(V_OUTPUT, V_RESULT);

  END LOOP; 

UTL_FILE.FCLOSE(V_OUTPUT);

 EXCEPTION
  WHEN UTL_FILE.INVALID_PATH THEN 
    DBMS_OUTPUT.PUT_LINE('INVALID PATH');
  WHEN UTL_FILE.INVALID_MODE THEN
    DBMS_OUTPUT.PUT_LINE('INVALID MODE');
  WHEN UTL_FILE.INVALID_OPERATION THEN
    DBMS_OUTPUT.PUT_LINE('INVALID OPERATION');

1 个答案:

答案 0 :(得分:0)

当您使用UTL_FILE.FOPEN打开文件时,Oracle会打开数据库字符集中的文件,现在默认为AL32UTF8

之后使用外部应用程序更改文件的编码(例如,Java工具native2ascii)或使用UTL_FILE.FOPEN(..., open_mode => 'wb')来编写字节值。

写作(未经测试):

UTL_FILE.PUT_LINE(V_OUTPUT, CONVERT(V_RESULT, 'KO16MSWIN949'));