如何使用 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如何设置SQLPlus结果显示的宽度,ORACLE sqlplus提示符设置