shell脚本和sqlplus间的交互

有些时候我们可能需要shell脚本通过oracle的sqlplus执行一些sql,并对结果集进行相关的操作。这里大致总结有如下几种方法
直接获取单个值

#!/bin/bash
result=`sqlplus -S system/password <<EOF
set heading off feedback off pagesize 0 verify off echo off numwidth 4
select 1 from dual;
exit
EOF`
echo $result #将返回sql执行的结果

 

将shell的参数传递给sqlplus

#!/bin/bash
TEST="table_name"
sqlplus -S system/password <<EOF
select * from user_tables where table_name = upper('$TEST');
exit
EOF

 

sqlplus的结果含有多个列值

#使用上篇日志的例子

result=`sqlplus -S system/password <<EOF
set heading off feedback off pagesize 0 verify off echo off numwidth 4
select t2.used,t1.maxsize from (select count(file_name)*32 maxsize from dba_data_files where tablespace_name ='$TBS_NAME') t1,(select trunc(sum(bytes)/1024/
1024/1024) used from dba_data_files where tablespace_name='$TBS_NAME') t2;
exit
EOF`

USED=`echo $result |cut -d " " -f1`
MAXSIZE=`echo $result |cut -d " " -f2`

 

最后两行就是对多结果集的处理,该查询语句将返回两列。不管是两列还是多列。系统都是用空格作为分隔符的顺序输出。所以我们通过上面两行就可以取到需要的值。如果列数或行数较多,可以使用其他方法,如for等。
但是一定要注意,返回的结果集数据里面本身是否就含有空格~不要造成无伤

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值