灵活结合Linux/Unix Shell 与SQL 之间的变量传输,极大程度的提高了DBA的工作效率,本文针对Linux/Unix shell sql 之间传递变量给出几个简单的示例以供参考。
Linux/Unix 下调用SQL,RAMN 请参考:Linux/Unix shell 脚本中调用SQL,RMAN脚本
一、示例
- 1、shell变量接受sql返回值之方式一
- oracle@SZDB:~>more./retval.sh
- #!/bin/bash
- RETVAL=`sqlplus-silentscott/tiger<<EOF
- SETPAGESIZE0FEEDBACKOFFVERIFYOFFHEADINGOFFECHOOFF
- SELECT*FROMempWHEREename='SCOTT';
- EXIT;
- EOF`
- if[-z"$RETVAL"];then
- echo"Norowsreturnedfromdatabase"
- exit0
- else
- echo$RETVAL
- fi
- oracle@SZDB:~>chmodu+xretval.sh
- oracle@SZDB:~>./retval.sh
- 7788SCOTTANALYST756619-APR-8734171.8820
- 2、shell变量接受sql返回值之方式二
- oracle@SZDB:~>more./retval_2.sh
- #!/bin/bash
- #Author:RobinsonCheng
- #Blog:http://blog.youkuaiyun.com/robinson_0612
- sqlplus-S"scott/tiger"<<EOF
- SETPAGESIZE0FEEDBACKOFFVERIFYOFFHEADINGOFFECHOOFF
- colcntnew_valuev_cnt
- SELECTcount(*)cntFROMempWHEREdeptno=10;
- exitv_cnt
- EOF
- VALUE="$?"
- echo"showrowsfordeptno10:$VALUE"
- 3、将shell变量作为参数传递给sql脚本
- oracle@SZDB:~>more./retval_3.sh
- #!/bin/bash
- v_empno="$1"
- sqlplus-S"scott/tiger"<<EOF
- SETPAGESIZE0FEEDBACKOFFVERIFYOFFHEADINGOFFECHOOFF
- SELECTenameFROMempWHEREempno=$v_empno;
- exit
- EOF
- exit
- oracle@SZDB:~>./retval_3.sh7788
- SCOTT
本文提供了Linux/UnixShell脚本与SQL之间传递变量的几个示例,通过这种方式极大提升了数据库管理员(DBA)的工作效率。包括接受SQL返回值的方式、将Shell变量作为参数传递给SQL脚本等。
360

被折叠的 条评论
为什么被折叠?



