我在这个论坛中见过以下脚本,它很有用
echo "This will print the Date"
VALUE=`sqlplus -silent apps/Z4vRD3me <<END
set pagesize 0 feedback off verify off heading off echo off
select sysdate from dual
exit;
END`
# xx=$(echo 'select sysdate from dual' | sqlplus -silent apps/Z4vRD3me)
echo $VALUE
echo "End of SQL"
但是在退出SQL * PLUS之后,我想在进一步的unix脚本中使用存储在'VALUE'变量中的sysdate值
执行此脚本后,我们将返回unix模式。然后,如果我输入'echo $ VALUE'/'$ VALUE',则说“ksh:SQL * Plus :: not found”。
您能否给我解决方案来存储整个unix脚本所需的列值?
谢谢
答案 0 :(得分:1)
一个技巧是使用sql生成有效的shell命令并将其捕获到假脱机文件中。然后获取假脱机文件
TMPFILE=tmp_$$.sh
sqlplus -silent user/password <<END
set feedback off
set head off
spool $TMPFILE
Select 'export value=' || To_Char(Sysdate) from dual;
Select 'export TblCount=' || To_Char(count(*)) from all_tables;
spool off
exit
END
#Run the commands you generated in the current process and remove temp
. $TMPFILE
rm $TMPFILE
echo $value
echo $TblCount