Linux/Unix shell sql 之间传递变量

灵活结合Linux/Unix Shell 与SQL 之间的变量传输,极大程度的提高了DBA的工作效率,本文针对Linux/Unix shell sql 之间传递变量给出几个简单的示例以供参考。

Linux/Unix 下调用SQL,RAMN 请参考:Linux/Unix shell 脚本中调用SQL,RMAN脚本

一、示例

[python] view plain copy print ?
  1. 1、shell变量接受sql返回值之方式一
  2. oracle@SZDB:~>more./retval.sh
  3. #!/bin/bash
  4. RETVAL=`sqlplus-silentscott/tiger<<EOF
  5. SETPAGESIZE0FEEDBACKOFFVERIFYOFFHEADINGOFFECHOOFF
  6. SELECT*FROMempWHEREename='SCOTT';
  7. EXIT;
  8. EOF`
  9. if[-z"$RETVAL"];then
  10. echo"Norowsreturnedfromdatabase"
  11. exit0
  12. else
  13. echo$RETVAL
  14. fi
  15. oracle@SZDB:~>chmodu+xretval.sh
  16. oracle@SZDB:~>./retval.sh
  17. 7788SCOTTANALYST756619-APR-8734171.8820
  18. 2、shell变量接受sql返回值之方式二
  19. oracle@SZDB:~>more./retval_2.sh
  20. #!/bin/bash
  21. #Author:RobinsonCheng
  22. #Blog:http://blog.csdn.net/robinson_0612
  23. sqlplus-S"scott/tiger"<<EOF
  24. SETPAGESIZE0FEEDBACKOFFVERIFYOFFHEADINGOFFECHOOFF
  25. colcntnew_valuev_cnt
  26. SELECTcount(*)cntFROMempWHEREdeptno=10;
  27. exitv_cnt
  28. EOF
  29. VALUE="$?"
  30. echo"showrowsfordeptno10:$VALUE"
  31. 3、将shell变量作为参数传递给sql脚本
  32. oracle@SZDB:~>more./retval_3.sh
  33. #!/bin/bash
  34. v_empno="$1"
  35. sqlplus-S"scott/tiger"<<EOF
  36. SETPAGESIZE0FEEDBACKOFFVERIFYOFFHEADINGOFFECHOOFF
  37. SELECTenameFROMempWHEREempno=$v_empno;
  38. exit
  39. EOF
  40. exit
  41. oracle@SZDB:~>./retval_3.sh7788
  42. SCOTT

你可能感兴趣的:(linux)