zoukankan      html  css  js  c++  java
  • 转:sqlplus与shell互相传值的几种情况

    sqlplus与shell互相传值的几种情况

    情况一:在shell中最简单的调用sqlplus

    $cat test.sh

    #!/bin/sh

    sqlplus oracle/oracle@oracle>file.log <<EOF

    select * from test;

    exit

    EOF  #注意EOF要顶格写

    $sh test.sh

    $cat file.log

    --省略若干系统提示信息-------

    SQL>

    EMPNO   EMPNAME          SAL      DEPTNO

    -----   -------------    -----    ------

    10002   Frank Naude      500      20

    10001   Scott Tiger      1000     40

    --省略若干系统提示信息-------

    将执行过程重定向入文件file.log,可通过cat file.log查看

    情况二:直接将sqlplus的值赋值给shell变量

    $cat test.sh

    #!/bin/sh

    # 将sqlplus的结果输出给变量VALUE

    # set命令的使用可查询手册

    #注意shell中等号两边不能有空格

    VALUE=`sqlplus -S /nolog <<EOF

    set heading off feedback off pagesize 0 verify off echo off

    conn oracle/oracle@oracle

    select count(*) from test;

    exit

    EOF`

    #输出记录数

    echo "The number of rows is $VALUE."

    $sh test.sh

    The number of rows is    2.

    显示结果正确,表test共2条记录

    情况三:间接将sqlplus的值赋值给shell变量

    $cat test.sh

    #!/bin/sh

    #利用COL column NEW_VALUE variable定义变量

    #sqlplus执行完后最后返回值为v_coun

    #利用$?将最后返回值赋值给VALUE,也即为test的记录数

    sqlplus -S /nolog <<EOF

    set heading off feedback off pagesize 0 verify off echo off

    conn oracle/oracle@oracle

    col coun new_value v_coun

    select count(*) coun from test;

    exit v_coun

    EOF

    VALUE="$?"

    echo "The number of rows is $VALUE."

    $sh test.sh

             2

    The number of rows is 2.

    脚本执行结果中第一个2为sqlplus返回值,第二个2为VALUE的值

    情况四:将shell变量的值传给sqlplus使用

    $cat test.sh

    #!/bin/sh

    #sqlplus引用shell变量TABLENAME的值

    #注意赋值时,等号两边不能有空格

    TABLENAME="test"

    sqlplus -S oracle/oracle@oracle <<EOF

    select * from ${TABLENAME};

    exit

    $sh test.sh

    EMPNO EMPNAME                                                   SAL DEPTNO

    ----- -------------------------------------------------- ---------- ------

    10002 Frank Naude                                               500 20

    10001 Scott Tiger                                              1000 40

    脚本执行结果为:select * from test;的结果

    情况五:通过交互方式手工输入shell变量值

    $cat test.sh

    #!/bin/sh

    #将手工输入变量值读入变量TABLENAME

    echo  "Enter the tablename you want to select:"

    read TABLENAME

    sqlplus -S oracle/oracle@oracle <<EOF

    select * from ${TABLENAME};

    exit

    $sh test.sh

    #按提示输入表名test

    Enter the tablename you want to select:

    test

    EMPNO EMPNAME                                                   SAL DEPTNO

    ----- -------------------------------------------------- ---------- ------

    10002 Frank Naude                                               500 20

    10001 Scott Tiger                                              1000 40

    脚本执行结果为select * from test的执行结果

    本文出自 “To_Be_Monster_Of_IT” 博客,请务必保留此出处http://nbmonster.blog.51cto.com/1977736/665767

  • 相关阅读:
    AM335X UBOOT(以UART为例分析UBOOT主要流程)
    分析一个UBOOT的方法
    Omapl138中AIS文件分析(参照Using the OMAP-L138 Bootloader)(转)
    linux内核--wait_event_interruptible_timeout()函数分析(转)
    CSS3(8)过渡
    CSS3(7)2D转换
    CSS3(6)字体
    CSS3(5)文本效果
    CSS3(4)渐变
    CSS3(3)背景
  • 原文地址:https://www.cnblogs.com/xieon1986/p/4165013.html
Copyright © 2011-2022 走看看