把oracle数据库里查到的一个值付给shell里的一个变量
来源:互联网 发布:苏泊尔美的电饭煲知乎 编辑:程序博客网 时间:2024/05/22 06:09
今天跟开发的同志学了一手,如何将数据库查到值付给shell里的一个变量,例子如下:
sql001="select 'status='||to_char(last_day(sysdate),'dd') from dual;"
monthend=`echo $sql001 | \
sqlplus -S ${DBUSER}/${DBPASS}@${DBSERV} | \
grep status | \
awk -F= '{print $2}' `
monthend=`echo $sql001 | \
sqlplus -S ${DBUSER}/${DBPASS}@${DBSERV} | \
grep status | \
awk -F= '{print $2}' `
可以看出变量monthend就是每月最后一天的值了。
针对自己的需要修改了一下:
dbdate1="select 'status '||to_char(sysdate,'dd')||' '||to_char(sysdate-1,'dd') from dual;"
#dbdate2="select 'status='||to_char(sysdate-1,'dd') from dual;"
daystr=`echo $dbdate1 | \
sqlplus -S ${DBUSER}/${DBPASS}@${DBSERV} | grep status `
day1=`echo $daystr | awk '{print $2}' `
day2=`echo $daystr | awk '{print $3}' `
day=$day1
if [ "$day1" -eq "01" ]
then
day=`expr $day2 + 1`
fi
echo $day1
echo $day2
echo $day
#dbdate2="select 'status='||to_char(sysdate-1,'dd') from dual;"
daystr=`echo $dbdate1 | \
sqlplus -S ${DBUSER}/${DBPASS}@${DBSERV} | grep status `
day1=`echo $daystr | awk '{print $2}' `
day2=`echo $daystr | awk '{print $3}' `
day=$day1
if [ "$day1" -eq "01" ]
then
day=`expr $day2 + 1`
fi
echo $day1
echo $day2
echo $day
这里day1是今天的日期,day1是前一天的日期,day的值是在day1为每月首日的时候将day2值加1。别问为什么要这么干,应用需要,呵呵。
自己的shell超烂,还得多跟人家学学,呵呵。
还在网上搜到两种方法
1:
sqlplus -S "/ as sysdba" << !
set heading off
col today noprint
column today new_val dat
select to_char( sysdate, 'yyyy-mm-dd') today from dual;
host echo 'today is ' &dat
exit;
exit;
!
set heading off
col today noprint
column today new_val dat
select to_char( sysdate, 'yyyy-mm-dd') today from dual;
host echo 'today is ' &dat
exit;
exit;
!
2:
#!/bin/ksh
VALUE=`sqlplus -silent "/ as sysdba" < < END
set pagesize 0 feedback off verify off heading off echo off
select max(sequence#) from v\\\$log_history;
exit;
END`
if [ -z "$VALUE" ]; then
echo "No rows returned from database"
exit 0
else
echo "Max Sequence Number: $VALUE"
fi
VALUE=`sqlplus -silent "/ as sysdba" < < END
set pagesize 0 feedback off verify off heading off echo off
select max(sequence#) from v\\\$log_history;
exit;
END`
if [ -z "$VALUE" ]; then
echo "No rows returned from database"
exit 0
else
echo "Max Sequence Number: $VALUE"
fi
不过感觉都没有随开始的那个好使,全当记录吧。
最后在记录一个shell中执行sql的方法,修改下也可以付值。
#!/usr/bin/ksh
SQL_EXEC()
{
sqlplus $USER/$PASSWD@$DB<<!
set linesize 1024
set pagesize 1024
$SQLCOMM
quit
!
}
#select
SQLCOMM="select 'xxx',username from all_users;"
SQL_EXEC | grep xxx
SQL_EXEC()
{
sqlplus $USER/$PASSWD@$DB<<!
set linesize 1024
set pagesize 1024
$SQLCOMM
quit
!
}
#select
SQLCOMM="select 'xxx',username from all_users;"
SQL_EXEC | grep xxx
这种方法比较整洁清晰,不过我没试过是否可以,哈哈。
0 0
- 把oracle数据库里查到的一个值付给shell里的一个变量
- C#里怎样把一个DataTable的数据追加进数据库里的某个表
- 把程序中大部分的变量放在一个类里()
- shell脚本里的变量
- 怎样把数据库表的二个列合并成一个列Fill进DataSet里?
- Oracle里的绑定变量
- 把一个网页文件的内容导入到word里
- 把一个网页文件的内容导入到word里
- 怎么把控件贴到三维空间里的一个面上
- 把DATASET里的多个表导出到一个excel文件?
- 把一个数组里的组合全部列出来.
- 怎么把一个字节里的比特顺序倒转?
- C#里,把一个对象的属性转成XML
- 把一个数组里的数组合全部列出
- 把一个Color转为html里所用的颜色代码
- 把一个数组里的组合全部列出
- Eclipse里选一个变量后,这个类里的该变量不变色了
- Eclipse里选一个变量后,这个类里的该变量不变色了
- chrome控制台的用法(对调试js有很大的作用)
- ItelliJ 配置文件引用maven设置的环境变量
- SQL 大小写
- RAII惯用法:C++资源管理的利器
- 4-6q环视之显示,fb的注册
- 把oracle数据库里查到的一个值付给shell里的一个变量
- 第十三周项目六体验文件操作(2-热身)
- [翻译] [RabbitMQ+Python入门经典] 兔子和兔子窝
- JAVA程序实现对SFTP服务器的操作
- 广东省范德萨发的萨菲的萨菲水电费的萨菲水电费
- Android开发之如何保证Service不被杀掉(broadcast+system/app)
- IOS单例模式(Singleton)
- 大型网站系统架构分析
- JPA注解简介