美文网首页
sqlplus与shell互相传值的几种情况

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

作者: Always_Gooner | 来源:发表于2017-05-18 20:51 被阅读0次

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

$cat test.sh

#!/bin/sh

sqlplus oracle/oracle@oracle>file.log <

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 <

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 <

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 <

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 <

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” 博客,请务必保留此出

相关文章

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

    情况一:在shell中最简单的调用sqlplus $cat test.sh #!/bin/sh sqlplus o...

  • 互粉的几种情况

    第一种,你粉我,我没看过你的文章,我被迫粉你,这不是我的本意,我是感觉像是被强X。我变成你的粉丝后,我变成僵尸粉,...

  • VUE项目获取url中的参数

    获取url参数有两种情况: 情况一:内部页面之间互相传值 这里先讲情况一,因为同一项目内互相传值比较简单,假如要从...

  • 安卓Fragment

    Fragment 与Activity 如何互相传值 Fragment传值给Activity: 当Fragment与...

  • Oracle 登陆

    登陆的几种方式 关于登陆命令 sqlplus /nolog The /NOLOG option starts SQ...

  • PHP 《PHP 编程入门》实验报告

    Boolean 误区 几种转换为 Boolean 时,其值为 FALSE 的情况布尔值 FALSE 本身整型值 0...

  • Oracle 特殊符号'&'的处理

    在SQLPlus中默认的"&"表示替代变量,也就是说,只要在命令中出现该符号,SQLPlus就会要你输入替代值。这...

  • 整理值为undefined的几种情况

    变量提升 函数没有返回值 数组下标不存在时,取值 对象中属性名不存在时,取值 定义变量,但未赋值 继续用pop或s...

  • JS注意细节

    (undefined, number, string, boolean)属于简单的值类型,不是对象。剩下的几种情况...

  • Shell 小技巧

    使用shell求DNA序列的反向序列: 使用Shell 求 DNA 的互补序列: 使用 Shell 求DNA反向互...

网友评论

      本文标题:sqlplus与shell互相传值的几种情况

      本文链接:https://www.haomeiwen.com/subject/mehexxtx.html