Plsql 在捕获异常时是否必须像在其他编程语言中一样使用UTL_FILE.FCLOSE?

Plsql 在捕获异常时是否必须像在其他编程语言中一样使用UTL_FILE.FCLOSE?,plsql,oracle11g,Plsql,Oracle11g,在捕获异常时是否必须像在其他编程语言中一样使用UTL_FILE.FCLOSE 我正在使用Oracle 11gR2: 示例代码: DECLARE V1 VARCHAR2(32767) := 'This is a test'; F1 UTL_FILE.FILE_TYPE; BEGIN F1 := UTL_FILE.FOPEN('MYDIR','MYFILE','w',256); UTL_FILE.PUT_LINE_NCHAR(F1,V1); UTL_FILE.FCLO

在捕获异常时是否必须像在其他编程语言中一样使用UTL_FILE.FCLOSE

我正在使用Oracle 11gR2:

示例代码:

DECLARE 
  V1 VARCHAR2(32767) := 'This is a test'; 
  F1 UTL_FILE.FILE_TYPE; 
BEGIN 
  F1 := UTL_FILE.FOPEN('MYDIR','MYFILE','w',256); 
  UTL_FILE.PUT_LINE_NCHAR(F1,V1); 
  UTL_FILE.FCLOSE(F1); 
EXCEPTION
  WHEN OTHERS THEN
     IF UTL_FILE.IS_OPEN(F1) THEN
         UTL_FILE.FCLOSE(F1);
     END IF;
END;

您可以在异常中使用
FCLOSE\u ALL
。这将确保在引发异常时,作为会话一部分的所有打开的文件句柄都会关闭。

输入异常块不会自动关闭文件,因此,是的,您需要这样做。这是一个问题吗?我只是问了一个问题,因为在许多网站/教程中,作者忘记了关闭处理程序。当你将此作为答复发布时,我将予以批准。