如何从Pl/SQL写入文本文件,PLS错误00363

Bat*_*nov 11 oracle plsql utl-file

我试图从一个过程写入一个文件:

out_File := Utl_File.FOpen('C:\test', 'batotest.txt' , 'W');

  Utl_File.Put_Line(out_file , 'Hi this is text file!');
  Utl_File.FClose(out_file);
Run Code Online (Sandbox Code Playgroud)

PACKAGE xxxxxxxx的编译错误

Error: PLS-00363: âûðàæåíèå 'OUT_FILE' íå ì.á. èñïîëüçîâàíî êàê àäðåñàò íàçíà÷åíèÿ
Line: 795
Text: out_File := Utl_File.FOpen('C:\test', 'batotest.txt' , 'W');

Error: PL/SQL: Statement ignored
Line: 795
Text: out_File := Utl_File.FOpen('C:\test', 'batotest.txt' , 'W');

Error: PLS-00363: 'OUT_FILE' íå ì.á. èñïîëüçîâàíî êàê àäðåñàò íàçíà÷åíèÿ
Line: 797
Text: Utl_File.FClose(out_file);

Error: PL/SQL: Statement ignored
Line: 797
Text: Utl_File.FClose(out_file);
Run Code Online (Sandbox Code Playgroud)

所以这是我的代码,它给了我这个错误,有什么问题?

Bob*_*ica 26

首先,您需要创建一个目录对象来访问C:\ test目录:

CREATE OR REPLACE DIRECTORY CTEST AS 'C:\test';
GRANT READ ON DIRECTORY CTEST TO PUBLIC; 
Run Code Online (Sandbox Code Playgroud)

接下来,打开文件时需要使用此目录对象:

DECLARE
  out_File  UTL_FILE.FILE_TYPE;
BEGIN
  out_File := UTL_FILE.FOPEN('CTEST', 'batotest.txt' , 'W');

  UTL_FILE.PUT_LINE(out_file , 'Hi this is text file!');
  UTL_FILE.FCLOSE(out_file);
END;
Run Code Online (Sandbox Code Playgroud)

分享和享受.