oracle - 如何在 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 的日志文件
解决方案
可以在 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;
/
推荐阅读
- swagger - 如何使用 BuildFire 公共 API 获取所有用户的列表?
- react-native - 在生产模式下反应原生 iOS 应用程序崩溃
- python - 如何从 twitch 聊天中获取最近的消息?
- wso2 - 使用 WSO2 作为 docebo 系统的身份提供者
- python - 更改括号类型更改返回类型
- python-3.x - 如何将 tf.estimator 转换为 keras 模型?
- java - 如何最大化和最小化 Swing 中 JPanel 内的 JTable?
- python-3.x - 如何将csv文件从s3复制到mysql rds
- asp.net-core - Razor Pages - 不使用 post 运行服务器端方法
- drools - 规则引擎是否适合根据一组规则验证数据?