暂无图片
在shell中操作sqlplus,如何实现每查询一条就将查询的字段与结果返回给shell变量?
我来答
分享
清晨到日暮
2021-10-09
在shell中操作sqlplus,如何实现每查询一条就将查询的字段与结果返回给shell变量?

在shell中操作sqlplus,如何实现每查询一条就将查询的字段与结果返回给shell变量?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
Murkey

注意sqlplus段使用老板键`了, 赋变量的等号两侧不能有空格.

$ vi test2.sh

#!/bin/bash
VALUE=`sqlplus -S /nolog <<EOF
set heading off feedback off pagesize 0 verify off echo off numwidth 4
conn u_test/iamwangnc
select count(*) from tab;
exit
EOF`
if [ "$VALUE" -gt 0 ]; then
        echo "The number of rows is $VALUE."
        exit 0
else
        echo "There is no row in the table."
fi

$ chmod +x test2.sh
$ ./test2.sh

三、把sqlplus执行结果传递给shell方法二

注意sqlplus段使用 col .. new_value .. 定义了变量并带参数exit, 然后自动赋给了shell的$?

$ vi test3.sh

#!/bin/bash
sqlplus -S /nolog > result.log <<EOF
set heading off feedback off pagesize 0 verify off echo off numwidth 4
conn u_test/iamwangnc
col coun new_value v_coun
select count(*) coun from tab;
exit v_coun
EOF
VALUE="$?"
echo "The number of rows is $VALUE."

$ chmod +x test3.sh
$ ./test3.sh

四、把shell程序参数传递给sqlplus

$1表示第一个参数, sqlplus里可以直接使用, 赋变量的等号两侧不能有空格不能有空格.

$ vi test4.sh

#!/bin/bash
NAME="$1"
sqlplus -S u_test/iamwangnc <<EOF
select * from tab where tname = upper('$NAME');
exit
EOF

$ chmod +x test4.sh
$ ./test4.sh ttt

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
oracle如何查询数据库正在运行的大事务
回答 1
已采纳
查当前正在运行的事务以及sqlSELECTt.startdate,t.startscn,s.sid,s.serial,s.username,s.program,q.sqltext,q.sqlidFRO
ORACLE安装13C EMCC报错
回答 8
已采纳
在安装Oracle&nbsp;&nbsp;13c&nbsp;&nbsp;EMCC时,可能会出现多种错误,具体取决于错误的类型和原因。以下是一些常见的错误和可能的解决方案:1.&nbsp;&nbsp;数
小白提问:各位大佬,怎样查某用户名下的表和字段?
回答 2
黎琛给的很全面了。
Oracle 用什么语句查询指定用户下有多少张表?
回答 2
更正下,第二句应该为:selectcount()fromdbatableswhereowner'xxx';如果不是查当前用户而是查xxx用户的话。
你安装非RAC Oracle数据库。在安装过程中,Oracle Universal Installer(OUI)会提示你输入清单目录的路径并指定操作系统组名称。 哪个论述是对的?
回答 5
选:C;在安装非RACOracle数据库时,OracleUniversalInstaller(OUI)确实会要求你输入清单目录(oraInventory)的路径,并且需要指定一个操作系统组,这个组通常
MySQL LIMIT 如何改写成Oracle limit?
回答 1
已采纳
SELECTFROM(SELECTROWNUMRNFROM(SELECTFROMt)AWHEREROWNUM&lt;115)WHERERN&gt;100;这是12以前12以后SELECTFROMtOF
rac并发问题讨论
回答 1
已采纳
从11g开始增加paralleldegreepolicy和parallelforcelocal参数控制跨节点操作
Oracle 中为什么ASM 做磁盘扩容的时候要备份元数据?
回答 1
现在扩容一般都不再备份元数据了,只是为了以防万一罢了。
请问以下图示是没权限吗?
回答 1
语法错误GRANT{{CREATE|TEMPORARY|TEMP}[,…]|ALL[PRIVILEGES]}ONDATABASEdbname[,…]TO{username|GROUPgroupname
在上传awr报告时显示参数错误
回答 2
@天王李,已修复,请重新尝试上传