https://www.cnblogs.com/youngerger/p/9068888.html

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的执行结果

[转帖]sqlplus与shell互相传值的几种情况的更多相关文章

  1. 转:sqlplus与shell互相传值的几种情况

    sqlplus与shell互相传值的几种情况 情况一:在shell中最简单的调用sqlplus $cat test.sh #!/bin/sh sqlplus oracle/oracle@oracle& ...

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

    2578人阅读   sqlplus与shell互相传值的几种情况 情况一:在shell中最简单的调用sqlplus $cat test.sh #!/bin/sh sqlplus oracle/orac ...

  3. 上传图片shell绕过过滤的几种方法

    一般网站图片上传功能都对文件进行过滤,防止webshelll写入.但不同的程序对过滤也不一样,如何突破过滤继续上传? 本文总结了七种方法,可以突破! 1.文件头+GIF89a法.(php)//这个很好 ...

  4. MVC控制器向View视图传值的三种方法

    首先创建一个MVC的项目,其中需要一个控制器(TestController),三个视图(index,edit,detail) 1.项目结构如下:

  5. android fragment传递参数_fragment之间传值的两种方法

    在Activity中加载Fragment的时候.有时候要使用多个Fragment切换.并传值到另外一个Fragment.也就是说两个Fragment之间进行参数的传递.查了很多资料.找到两种方法.一种 ...

  6. ASP.NET 页面之间传值的几种方式

    开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...

  7. 第三节:Action向View传值的四种方式(ViewData、ViewBag、TempData、Model)

    简  介 在前面的章节中,我们已经很清楚,MVC工作模型的流程,Controller中的Action接收到客户端的请求,处理后要将数据返回给View,那么Action中是如何将数据返回给View的,二 ...

  8. React Router v4 页面传值的三种方法

    传值方法 1.props.params 使用React router定义路由时,我们可以给指定一个path,然后指定通配符可以携带参数到指定的path: <Route path='/user/: ...

  9. 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  10. shell编程中的 三种结构: 条件if/选择结构case/循环for/while/until等结构 和 函数的用法

    shell 函数的使用 (md中, 列表本身是有格式的, 他要产生缩进, 其次,列表项和列表项之间, 可以留有一个空行, 是合法的, 允许的) shell函数,就是 就相当于一个命令来看待和处理的, ...

随机推荐

  1. 【OpenVINO】 使用 OpenVINO CSharp API 部署 PaddleOCR 项目介绍

    前言:   在之前的项目中,我们已经使用 OpenVINOTM CSharp API 部署 PaddleOCR 全系列模型,但随着PaddleOCRv4版本发布以及OpenVINO CSharp AP ...

  2. 华为云 UCS GitOps:轻松交付多集群云原生应用

    摘要:使用华为云 UCS GitOps 配置管理来交付您的多云应用. 本文分享自华为云社区<华为云 UCS GitOps:轻松交付多集群云原生应用>,作者:华为云云原生团队. 随着业务的全 ...

  3. 华为云联合多家单位正式开源云原生多沙箱容器运行时Kuasar

    摘要:云原生多沙箱容器运行时Kuasar正式开源. 本文分享自华为云社区<重磅发布!华为云联合多家单位正式开源云原生多沙箱容器运行时Kuasar>,作者:云容器大未来. 当地时间4月21日 ...

  4. 云小课|MRS基础原理之Flink组件介绍

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:Flink是一个批 ...

  5. Python图像处理丨基于K-Means聚类的图像区域分割

    摘要:本篇文章主要讲解基于理论的图像分割方法,通过K-Means聚类算法实现图像分割或颜色分层处理. 本文分享自华为云社区<[Python图像处理] 十九.图像分割之基于K-Means聚类的区域 ...

  6. SecSolar:为代码“捉虫”,让你能更专心写代码

    摘要:在"更健壮.更安全"的路上,CloudIDE又迈出了关键的一步:推出了代码安全检测服务SecSolar,以轻量插件的形式,为代码"捉虫",帮助企业和开发者 ...

  7. 华为云GaussDB(for openGauss)推出重磅内核新特性

    摘要:华为云新一代金融级分布式数据库GaussDB(for openGauss)正式推出了Ustore存储引擎.基于Paxos协议的DCF高可用组件等多个重大内核新特性. 数字化时代,技术迭代更新比以 ...

  8. Taro架构构析(1):多端框架分析,Taro WePY uni-app对比

    多端框架分类 全包型 这类框架最大的特点就是从底层的渲染引擎.布局引擎,到中层的 DSL,再到上层的框架全部由自己开发,代表框架是 Qt 和 Flutter.这类框架优点非常明显:性能(的上限)高:各 ...

  9. Solon Web 开发:三、一个简单的 Web 模板项目(或示例)

    演示 web 程序的常用能力: 控制器.请求参数.参数校验.跳转 过滤器.全局异常处理 静态文件 动态模板 动态模板公共变量及控制器基类 日志 Json 渲染格式控制 模板下载: 打包成 jar ,可 ...

  10. ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found

    [root@localhost PaddleOCR]# strings /lib64/libstdc++.so.6 | grep 'CXXABI' CXXABI_1.3 CXXABI_1.3.1 CX ...