gpt4 book ai didi

database - 在 oracle 中停止执行 sqlplus 错误的批处理文件

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:54 30 4
gpt4 key购买 nike

我有 4 个文件名为test.bat 其中包含

@echo off
C:\oraclexe\app\oracle\product\10.2.0\server\BIN\sqlplus -s -l user/pass@localhost @E:\Oracle_Files\query.sql>E:\Oracle_Files\error.txt;
C:\oraclexe\app\oracle\product\10.2.0\server\BIN\sqlplus -s -l user/pass@localhost @E:\Oracle_Files\query1.sql>E:\Oracle_Files\error.txt

现在query.sql包含

WHENEVER SQLERROR EXIT SQL.SQLCODE
insert into mytable12 values('d');
exit;

而query1.sql包含

WHENEVER SQLERROR EXIT SQL.SQLCODE
begin
insert into mytable1 values('d2');
end;
exit;

现在的问题是 REAL TABLE NAME 是 mytable1,所以这里的问题是我想在错误出现时立即停止批处理文件的执行脚本错误不应该被执行,还有错误 errorlog.txt 文件内容被替换为“1 row updated”,这意味着我以前的错误消息正在被覆盖,我该如何阻止它?

简而言之,有两个问题

  • 如何在特定 1 个脚本文件出现错误时停止进一步执行脚本。
  • 如何防止覆盖日志文件中的日志

最佳答案

您需要在每次调用 SQL*Plus 后检查错误级别

@echo off
C:\oraclexe\app\oracle\product\10.2.0\server\BIN\sqlplus -s -l user/pass@localhost @E:\Oracle_Files\query.sql>E:\Oracle_Files\error.txt;
if errorlevel 1 (
goto error
)
C:\oraclexe\app\oracle\product\10.2.0\server\BIN\sqlplus -s -l user/pass@localhost @E:\Oracle_Files\query1.sql>>E:\Oracle_Files\error.txt
if errorlevel 1 (
goto error
)
:: no error, skip error message
goto end
:error
echo error occurred - check log file
:end

关于database - 在 oracle 中停止执行 sqlplus 错误的批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20922977/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com