[转帖]sqlplus与shell互相传值的几种情况
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互相传值的几种情况的更多相关文章
- 转:sqlplus与shell互相传值的几种情况
sqlplus与shell互相传值的几种情况 情况一:在shell中最简单的调用sqlplus $cat test.sh #!/bin/sh sqlplus oracle/oracle@oracle& ...
- sqlplus与shell互相传值的几种情况
2578人阅读 sqlplus与shell互相传值的几种情况 情况一:在shell中最简单的调用sqlplus $cat test.sh #!/bin/sh sqlplus oracle/orac ...
- 上传图片shell绕过过滤的几种方法
一般网站图片上传功能都对文件进行过滤,防止webshelll写入.但不同的程序对过滤也不一样,如何突破过滤继续上传? 本文总结了七种方法,可以突破! 1.文件头+GIF89a法.(php)//这个很好 ...
- MVC控制器向View视图传值的三种方法
首先创建一个MVC的项目,其中需要一个控制器(TestController),三个视图(index,edit,detail) 1.项目结构如下:
- android fragment传递参数_fragment之间传值的两种方法
在Activity中加载Fragment的时候.有时候要使用多个Fragment切换.并传值到另外一个Fragment.也就是说两个Fragment之间进行参数的传递.查了很多资料.找到两种方法.一种 ...
- ASP.NET 页面之间传值的几种方式
开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...
- 第三节:Action向View传值的四种方式(ViewData、ViewBag、TempData、Model)
简 介 在前面的章节中,我们已经很清楚,MVC工作模型的流程,Controller中的Action接收到客户端的请求,处理后要将数据返回给View,那么Action中是如何将数据返回给View的,二 ...
- React Router v4 页面传值的三种方法
传值方法 1.props.params 使用React router定义路由时,我们可以给指定一个path,然后指定通配符可以携带参数到指定的path: <Route path='/user/: ...
- 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- shell编程中的 三种结构: 条件if/选择结构case/循环for/while/until等结构 和 函数的用法
shell 函数的使用 (md中, 列表本身是有格式的, 他要产生缩进, 其次,列表项和列表项之间, 可以留有一个空行, 是合法的, 允许的) shell函数,就是 就相当于一个命令来看待和处理的, ...
随机推荐
- 微短剧市场暴涨267.65%,用微短剧场景AUI Kit精巧入局
微短剧,不仅上头,更要上心. 微短剧,深度"拿捏"了这个碎片化时代,也是刚过去的2023年绕不开的热词. 与传统影视剧制作精益求精.耗时长相反,门槛与耗时"双低" ...
- 3、Container容器组件
Container容器组件 代码 import 'package:flutter/material.dart'; void main() { runApp(MaterialApp( hom ...
- Java 编辑PPT SmartArt图形
本文介绍在Java程序中如何来编辑PPT幻灯片中已有的SmartArt图形,包括重置图形样式.颜色.添加/删除图形节点.编辑节点内容.添加超链接到节点(链接到网页.链接到指定幻灯片)等.在PPT中创建 ...
- MySQL篇:第二章_初识MySQL
初始MySQL MySQL的背景 1.前身属于瑞典的一家公司,MySQL AB 2.08年被sun公司收购 3.09年sun被oracle收购 MySQL的优点 1.开源.免费.成本低 2.性能高.移 ...
- 【DevCloud · 敏捷智库】如何利用核心概念解决估算常见问题(内附下载材料)
摘要:团队用于估算时间过多,留给开发的时间会相应减少,大家工作紧张,状态不佳.团队过度承诺直接造成迭代目标不能完成,士气低落.以上弊端直接伤害敏捷团队,是敏捷团队保持稳定健康节奏的阻力. 背景 敏捷江 ...
- 【API进阶之路】因为不会创建云服务器,我被实习生摆了一道
摘要:9个步骤通过API创建云服务器. 事情是这样的,公司成立了一个新项目,要给项目建官网,并搭建一个web服务器.按照我的习惯,搭建一个本地虚拟机就好了,部署简单方便还好配置,云服务器嘛,写了10年 ...
- 这项评测,华为云GaussDB(for MySQL)顺利通过
摘要:近日,中国信息通信研究院(简称"中国信通院")公布了第十五批"可信数据库"评测结果.华为云GaussDB(for MySQL)凭借过硬的技术实力顺利通过& ...
- 带你认识全新的华为云IoT路网数字化服务
摘要:随着通信技术的发展,交通领域提出以C-V2X车路协同技术来弥补单车智能存在的缺陷,从而推动智能驾驶.自动驾驶技术的成熟. 本文分享自华为云社区<带你全新认识华为云IoT路网数字化服务> ...
- 【“互联网+”大赛华为云赛道】API命题攻略:厘清三步解题思路,用好开发工具
摘要:结合华为云API开放平台API Exploer实现照片分类系统. API能为我们带来什么? 有了 API,可以创建管理云服务器.云容器.云硬盘,提高工作效率:可以接入图像识别.情感分析.内容审核 ...
- 火山引擎DataTester:一个爆款游戏产品,是如何用A/B测试打磨出来的?
随着国内游戏用户数量趋于饱和,中国游戏产业也从高速成长期逐渐转型,市场成熟度提升,竞争趋于精细化. 随着游戏出海以及私域流量运营的挑战,游戏企业对数据分析的使用需求和依赖度进一步提高.而在游戏研发立项 ...