首页 > 解决方案 > 如何在 sqlplus 中执行 .sql 文件时仅记录错误

问题描述

如何创建仅在通过 sqlplus 执行 .sql 文件期间发生异常时才会创建的 .log 文件。

WHENEVER SQLERROR EXIT SQL.SQLCODE

ALTER PRODUCT IDENTIFIED BY &1;
ALTER CUSTOMER IDENTIFIED BY &1;

EXIT;

该脚本通过sqlplus执行,我在命令行中添加参数,当参数不正确或发生ORA错误时执行,如何将其记录到该.sql所在的文件中。我不想跟踪所有执行只是创建一个包含错误 ORA 的日志文件

标签: oraclesqlplus

解决方案


可以在 Unix 框中创建日志文件,但使用 utl_file。因为这段代码应该写在开始结束块中。SQlPlus 本身没有根据条件创建假脱机文件的能力。

它可以写成如下内容:-

declare
  filehandle utl_file.file_type;
begin

  execute immediate 'ALTER PRODUCT IDENTIFIED BY &1';
  execute immediate 'ALTER CUSTOMER IDENTIFIED BY &1';

exception

when others 
then

  filehandle := utl_file.fopen('/unixpath/test', 'outputfile.log', 'W');
  utl_file.put_line(filehandle, 'test error '||sqlerrm);
  utl_file.fclose(filehandle);

end;
/

推荐阅读