我是shell脚本的新手。 我正在写一个DBA自动化的代码,其中我有master.sql文件有n个sqls的声明。这些sqls被放置在特定文件夹内。 我有一个脚本,调用此master.sql和一次间接执行的sql语句,并在一次 wwhat我想在如何在任何sql失败时停止unix shell脚本中的sqlplus命令
sqlplus的命令是节省内部master.sql声明的所有SQL的输出的日志文件保存是否它必须停止执行时,第一个sql失败,并返回错误与特定的SQL失败或要求回滚,并要求你想继续或不? 每次尝试使用sqlplus,sqlerror,$?毫无效果
sqlplus ${USER}/${PASS}@$SID @master.sql > /home/deploy/vidya/properties/result/result.log
现在我所试图做的是....我希望在任何的sql从起点失败,提示有错误的命令行上停止sql语句的执行和指定SQL失败
master.sql
SET ECHO ON
@/home/deploy/vidya/properties/001_dba_demo.sql
@/home/deploy/vidya/properties/003_dba_demo1.sql
@/home/deploy/vidya/properties/002_dba_demo2.sql
@/home/deploy/vidya/properties/004_dba_demo2.sql
EXIT
这是调用master.sql其正常工作
我.SH脚本#!/bin/bash
echo "Enter schema Name you want to connect: "
read USER
echo "Enter password: "
read -s PASS
#echo "Enter Oracle SID for the environment you want to connect with : "
#read SID
echo "Enter Environment for the environment you want to connect with : "
read ENV
echo "Enter Oracle SID for the environment you want to connect with : "
read SID
export ORACLE_SID=${SID}
if [ $ENV == UAT ]
then
echo "Connected withh UAT ORACLE HOME:"
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1
elif [ $ENV == PROD ]
then
echo "Connected with PROD ORACLE HOME:"
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1
else
echo "Wrong Environment Entered :"
fi
export PATH=$ORACLE_HOME/bin:$PATH
echo "want to execute sql? y/n"
read yn
sqlplus ${USER}/${PASS}@$SID @master.sql > /home/deploy/vidya/properties/result/result.log
**
谁能帮**
[WHENEVER SQLERROR(HTTPS:/ /docs.oracle.com/cd/B19306_01/server.102/b14357/ch12052.htm)? – 7171u