您的位置:首页 > 运维架构 > Shell

如何从SQL*PLUS向shell传递变量

2013-02-16 17:34 531 查看
如何从SQL*PLUS向shell传递变量

论坛上有人问这个问题,说无法通过sqlplus向shell传递变量,写了一个简单的脚本进行折中处理,供参考:

[oracle@jumper oracle]$ cat a.sh
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;
!
[oracle@jumper oracle]$ ./a.sh

today is  2005-04-11

[oracle@jumper oracle]$


itpub上的Toms_zhang朋友提供了另外一种方法:

[oracle@jumper oracle]$ more a.sh

#!/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

[oracle@jumper oracle]$ ./a.sh
Max Sequence Number:        17


http://www.eygle.com/archives/2005/04/eciosqlplusieos.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: