2017-07-19 81 views
0

我想编写一个脚本,:如何使用SQLPLUS查询的输出提示用户输入更多

  1. 提示您输入一个名称
  2. 在sqlplus的数据库,以查看是否一个select count它存在
  3. 最终用户查看查询结果并提示询问用户他们是否想运行语句2
  4. 如果您说是,则运行statement2。如果没有脚本被杀害

我遇到的问题是第一次查询运行后,检查它是否存在,我不知道如何添加一个提示,询问您是否要插入到数据库

这里是我到目前为止的代码:

echo "Please enter last name: 'input;" 
read input 

statement1="select count(*) as count from users 
where fname = '"$input"'" 

statement2="INSERT INTO users VALUES ('"$input"'); 
$ORACLE_HOME******************************** 
    $statement1 
    /
    quit; 
Eossql 

我想不通的部分,执行语句1后,我希望系统询问是否说法2应该执行的。有什么建议么?

谢谢!

编辑: 感谢CDahn的建议,这是我编辑的代码。这种解决方案的工作原理,但我想知道是否有一个更干净的方法来做到这一点,而不是连接到两次sqlplus。

echo "Please enter last name: 'input;" 
read input 
Statement2="INSERT INTO users VALUES ('"$input"');" 
output1=$($sqlplus -s User/[email protected] <<EOF 
set head off 
select count (*) from users 
where fname = '$input'; 
EXIT; 
EOF 
) 

read -p "User $input appears $output1 times. Create user? [Y/n]" answer 
if [ -z "$answer" -o "$answer" == "y" -o "$answer" == "Y" ] 
then 

$sqlplus -s User/[email protected] << Eossql 
set autocommit on 
set head off 
$Statement2 
    quit; 
Eossql 

else 
    echo "Not creating user" 
fi 
+0

您将需要问这个问题,然后有一个if语句处理响应。 –

回答

2

您需要调用添加到sqlplus让你写的查询的输出。请参阅this SO question以获取相关帮助。

一旦你有输出,你可以使用条件,如拉曼Sailopal建议。例如:

output1="`sqlplus $statement1`" 

read -p "User $input appears $output1 times. Create user? [Y/n]" answer 
if [ -z "$answer" -o "$answer" == "y" -o "$answer" == "Y" ] 
then 
    sqlplus $statement2 
else 
    echo "Not creating user." 
fi 
+0

这不是他要问的。在继续执行语句之前,他无法弄清楚如何让Shell脚本请求确认。 –

+1

@UlisesAndréFierro,他的问题比这个更多。他甚至不会查询数据库来首先做出决定。我想我至少会试图让他进入该地区,而不是将其标记为重复或不可撤销。但我同意,他正在寻求有条件的帮助并提示用户,但他也需要帮助其他所有人。 – CDahn

+0

我认为他展示了他有问题的部分代码,并且他以某种方式执行了这些陈述,但是你是对的,如果这是整个脚本,那么他肯定会问错误的问题。 –