如何使用 SqlPlus 查询的输出提示用户进行更多输入 [重复]

Posted

技术标签:

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

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

    提示您输入姓名 在sqlplus数据库中做一个select count看是否存在 最终用户查看查询结果并提示询问用户是否要运行 statement2 如果您说是,则运行语句 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 语句处理响应。 【参考方案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 的调用以首先从数据库中获取计数。

以上是关于如何使用 SqlPlus 查询的输出提示用户进行更多输入 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

oracle安装后完善2-2 sqlplus配置变量 命令提示符如何显示为用户名

查询oracle数据库所有用户的sqlplus命令是啥

查询oracle数据库所有用户的sqlplus命令是啥

Oracle--sqlplus如何设置SQLPlus结果显示的宽度,ORACLE sqlplus提示符设置

有啥方法可以使 SQLPlus 中的输出更宽(在 Windows 上)?

如何从sqlplus到bash脚本获取SQL查询输出