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

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

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

$cat test.sh

#!/bin/sh

sqlplus oracle/[email protected]>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/[email protected]

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/[email protected]

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/[email protected] <<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/[email protected] <<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

时间: 2024-08-04 23:24:08

转:sqlplus与shell互相传值的几种情况的相关文章

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

情况一:在shell中最简单的调用sqlplus $cat test.sh #!/bin/sh sqlplus oracle/[email protected]>file.log <<EOF select * from test; exit EOF  #注意EOF要顶格写 $sh test.sh $cat file.log --省略若干系统提示信息------- SQL> EMPNO   EMPNAME          SAL      DEPTNO -----   ------

ASP.NET页面间传值的几种常见方式

(新建项目WebApplication,添加新项:源页面Default.aspx和目标页面WebForm1.aspx. 在源页面Default.aspx中添加两个TextBox, ID分别为Nametb和Emailtb,两个Label;在WebForm1.aspx中添加两个Label,ID分别为lname和lemail,用于显示TextBox传过来的值.) 1.使用QueryString 使用QueryString在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它

ASP.Net中页面传值的几种方式

开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有3-5年经验的,有5-10年经验的,对于所有的面试者,我几乎问了同一道题:"请说说你所知道的页面之间传值的几种形式和方法, 并阐述他们的原理和过程",关于这道题,从大家的回答来看,结果并不是很理想,从种类上来说,大部分人回答5种左右,极少部分能回答8种,没有超过8种的,但从深度上来说,很少

一篇文章学会页面传值的10种方法(下)

一篇文章学会页面传值的10种方法(下) 6.代理委托实现页面之间的反向传值 这一种方法就是运用协议实现传值,这种方式也是在工程中常用的一种传值方法.首先创建好ViewController和SubViewController,在ViewController中创建好一个展示信息的Label,在SubViewController中创建好一个TextFeild,我们实现在第二个界面点击屏幕时,将TextFeild中的文字传到第一个界面,然后让背景颜色变色. 效果如下: 代理传值.gif 第一步: 首先我

一篇文章学会页面传值的10种方法(上)

一篇文章学会页面传值的10种方法(上) 1.最简单AB面正向传值 效果如下: 最简单的正向传值.gif 首先我们先创建两个视图控制器ViewController.swift和SubViewController.swift 设置第一个界面 首先在第一个界面创建好一个TextFeild,用来写我们要传的文字 import UIKit class ViewController: UIViewController {     let textField = UITextField()     overr

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

一般网站图片上传功能都对文件进行过滤,防止webshelll写入.但不同的程序对过滤也不一样,如何突破过滤继续上传? 本文总结了七种方法,可以突破! 1.文件头+GIF89a法.(php)//这个很好理解,直接在php马最前面写入gif89a,然后上传dama.php 2.使用edjpgcom工具向图片注入代码.(php)//edjpgcom修改,加入php一句话保存为dama.php 3.cmd命令下copy 图片.GIF+shell.php webshell.php (php) //估计和1

窗体传值的两种实现方法示例

这两天看前辈的视频初识了窗体传值,于是自己跟着敲了两个Demo,方便以后复习.分享交流. 窗体传值的两种方法:1.通过属性构造方法传值 2.利用委托实现传值. 示例1:点击Form1中的按钮打开From2,点击Form2中的按钮改变窗体Form1的背景颜色. Form1的代码: 1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 private void but

Android之intent传值的三种方法

Android之intent传值的三种方法分别是:1.startActivity():2.startActivityForResult():3.调用在下个activity自定义的方法"actionStart()",也就是最佳的方法. 一.一般方式传值跳转:startActivity()方法 /* 在MainActivity中定义如下代码 */ button1.setOnClickListener(new OnClickListener() { @Override public void

页面传值的几种方式

1.使用QueryString 使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案.使用这种方法的步骤如下: 1,使用控件创建web表单(form) 2,创建可以返回表单的按钮和链接按钮 3,在按钮或链接按钮的单击事件里创建一个保存URL的字符变量 4,在保存的URL里添加QueryString参数