【问题标题】:How to use output of SqlPlus query to prompt user for more input [duplicate]如何使用 SqlPlus 查询的输出提示用户进行更多输入 [重复]
【发布时间】:2017-12-25 05:32:51
【问题描述】:

我正在尝试编写一个脚本:

  1. 提示您输入姓名
  2. 在sqlplus数据库中做一个select count看是否存在
  3. 最终用户查看查询结果并提示询问用户是否要运行 statement2
  4. 如果您说是,则运行语句 2。如果没有脚本被杀死

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

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

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/Pass@connection <<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/Pass@connection << Eossql
set autocommit on
set head off
$Statement2
    quit;
Eossql

else
    echo "Not creating user"
fi

【问题讨论】:

  • 您需要提出问题,然后使用 if 语句处理响应。

标签: bash shell perl sqlplus ksh


【解决方案1】:

您需要添加对sqlplus 的调用以获取您编写的查询的输出。请参阅this SO question 以获得帮助。

一旦你有了输出,你就可以使用条件,正如 Raman 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

【讨论】:

  • 这不是他真正要问的。他不知道如何让 Shell 脚本在继续执行语句之前要求确认。
  • @UlisesAndréFierro,他遇到的问题远不止这些。他甚至没有首先查询数据库来做出决定。我想我至少会尝试让他进入该地区,而不是将其标记为重复或无法挽救。但我同意,他要求帮助处理条件并提示用户,但他需要其他所有方面的帮助。
  • 我以为他正在展示他遇到问题的代码部分,并且他以某种方式执行了这些语句,但你是对的,如果这是整个脚本,那么他肯定问错了问题.
  • @CDahn 我试图让脚本在执行语句 2 之前要求确认。很抱歉这篇令人困惑的帖子。
  • @connollyc4,是的,但是在获得第一个语句的结果之前,您不能要求确认。您的脚本当前没有与 sqlplus 对话。如果您忘记将其包含在示例代码中,那么这样做会很有帮助。如果这就是你的整个脚本,你需要添加对 sqlplus 的调用以首先从数据库中获取计数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-26
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
相关资源
最近更新 更多