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

  • 相关阅读:
    android彻底结束进程的两种方法
    清理软件缓存
    android webview 设置
    创建和使用Android library工程
    如何使Android应用程序获得root权限
    自动安装mysql5.7shell脚本实现与ansible脚本实现
    老生常谈:Asp.net Mvc 3 加载cshtml文件创建自定义分页
    老生常谈: Asp.net Mvc3 加载cshtml文件自定义分页+ 查询
    Razor API翻译
    Asp.net MVC 3使用 Area 小结
  • 原文地址:https://www.cnblogs.com/xieon1986/p/4165013.html
Copyright © 2011-2022 走看看