如何创建仅在通过sqlplus执行.sql文件时发生异常时创建的.log文件。
WHENEVER SQLERROR EXIT SQL.SQLCODE
ALTER PRODUCT IDENTIFIED BY &1;
ALTER CUSTOMER IDENTIFIED BY &1;
EXIT;
此脚本通过sqlplus执行,我在命令行中添加了参数,当参数不正确或发生ORA错误时执行该脚本,如何将其登录到此.sql所在的文件中。我不想跟踪所有执行,只是创建一个包含错误ORA的日志文件
答案 0 :(得分:0)
为避免命令输出,请添加
SET ECHO OFF
要记录消息,
您可以使用spool
spool /path/yourlogfile.log
OR
如果您在Unix环境中运行sqlplus
命令行,则可以重定向输出。
sqlplus usr/pwd@db @file.sql >/path/yourlogfile.log
要防止出现替换消息,请添加
SET VERIFY OFF
答案 1 :(得分:0)
可以在Unix框中创建日志文件,但可以使用utl_file。 对于此代码,应将其写在begin end块中。 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;
/