linux下的sqlplus命令

在shell脚本中通过调用sqlplus来执行SQL及一些数据库命令。下面来介绍一下常用的参数选项(现学现卖

1)-S

sqlplus -S/nolog

该参数选项登录时没有提示信息输出

2)EOF

EOF通常与<<一起使用,表示把后面的输入作为子命令或是shell的输入,直到再次遇到EOF结束该输入。下面,我们来看一个简单的数据库的启动和关闭脚本:

[.....]cat startup.sh

#!/bin/bash

#“>”表示把当前输入的结果使用文件*.log存储起来

sqlplus -S/nolog>startlog.log<<EOF

connect sys/sys as sysdba

startup;

exit

EOF

exit;

[.....]cat shutdown.sh

#!?bin/bash

sqlplus -S/nolog>shutlog.log<<EOF

conn sys/sys as sysdba

shutdown immediate;

quit

EOF

exit;

当我们不使用文件来记录日志时,它会直接输出到屏幕上。

3)下面,我们来看一个sqlplus与shell交互的例子:

[.....]$ cat test02.sh

#!/bin/ksh

read -p "Please input emplyees id>" emp_id

name=`sqlplus -S /nolog <<EOF

set heading off

set feedback off

conn hr/hr

select first_name || ‘ ‘ || last_name emp_name

from employees where employee_id = ‘$emp_id‘;

exit

EOF`

if [ "$name" == "" ]; then

echo "No data found";

else

echo "$name"

fi

exit;

[.....]$ sh test02.sh

Please input emplyees id>100

Steven King

[.....]$ sh test02.sh

Please input emplyees id>1

No data found

[.....]$

该程序的思想是,用户输入一个employee_id并显示该ID对应的员工姓名。注意上述的一个符号,该符号不是引号,是数字键1旁边的那个符号。

4)Sqlplus返回值给Shell

[[email protected] oracle_script]$ cattest3.sh

#!/bin/bash

source ~/.bash_profile

qlplus -S /nolog > result.log<<EOF

set heading off

feedback off

pagesize 0

verify off

echo off

numwidth 4

conn scott/tiger

col coun new_value v_coun

select count(*) coun from emp;

select * from emp where empno=7369;

exit v_coun

EOF

VALUE="$?"

echo "The number of rows is$VALUE."

该sqlplus使用 col  列名 new_value 变量名 定义了变量并带参数exit, 将变量v_coun返回赋给了shell的$?

备注:NEW_VALUE通常的使用方法为:

  column column_name new_value var_name

new_value是将所获得的列值赋予到变量名,然后该变量名可以参与后续处理

5)sqlplus文件操作命令

1.spool将屏幕显示及查询结果输入到指定文本文件中

spool d:\1.txt

select * from emp;

spool off

2.执行和编辑指定位置的SQL脚本

start d:\test.sql

@ d:\test.sql

执行当前目录下的SQL脚本,即:登陆SQLPLUS时的目录,示例如下:

[[email protected] oradiag_oracle]$ ls
    a.sql  diag
    [[email protected] oradiag_oracle]$ cat a.sql 
    select sysdate from dual;
    [[email protected] oradiag_oracle]$ sqlplus bys/bys
    [email protected]>@a.sql
    SYSDATE
     --------
    05-SEP-13

编辑指定的SQL脚本

edit d:\test.sql

3.&替代变量  如:

select * from emp where empno=&;

会提示输入EMPNO的值。交互式

4.将当前SQL缓冲构内SQL语句保存到指定文件

save d:\test2.sql

将文件中SQL语句调入SQLPLUS缓冲区

get d:\test2.sql

显示缓冲区内语句

list

注意:单引号和双引号内大小写敏感。

关键字不能缩写,也不能跨行书写,单引号内也不跨行写。

每个子句是一行。

字符串用单引,列别名用双引。

标点符号要用英文标点,中文出错。

6)SQLPLUS中显示设置-列长、分页

1.更改分页、行宽设置

show linesize

show pagesize

set linesize 100       ——默认80字符

set pagesize 20      ——默认14行

SQL> set numwidth     38好像设置数字型的默认显示宽度 set num 4 ,所以显示会有变 ##

2.设置指定显示的列名的宽度--列是字符及数字

col username format a20     设置 username列的列宽是20个字符-----字符列宽

col username for a4

[email protected]>col aa format 99,999,999      设置abc列的列宽是8位,并用逗号隔开---数字列宽

时间: 2024-10-10 16:58:47

linux下的sqlplus命令的相关文章

linux下修改rm命令防止误删除

前言:相信很多朋友都遇到过在linux下用rm命令误删除文件的时候,此刻的心中仿佛有无数的羊驼在奔腾.那么怎么防止这种情况发生呢?当然是有方法的,我们可以写一个shell脚本,改变一下rm命令的作用. 第一步: 先在home目录下创建一个叫username名字的目录(当然名字可以自定义),具体命令为:sudo mkdir username(自定义的名字) 这时候记得要用命令:sudo chmod 777 username(自定义的名字)来改变一下你的目录权限,因为在home目录下刚创建的目录是没

Linux下使用ps命令来查看Oracle相关的进程

Linux下可以使用ps命令来查看Oracle相关的进程 Oracle Listener 这个命令会列出Oracle Net Listener的进程 [[email protected] www.linuxidc.com ~]$ ps -ef | grep tnslsnr oracle    1999 29986  0 09:47 pts/2    00:00:00 grep tnslsnr oracle    3647     1  0 Jul03 ?        00:00:34 /u01

linux下的shell命令的编写,以及java如何调用linux的shell命令(java如何获取linux上的网卡的ip信息)

程序员都很懒,你懂的! 最近在开发中,需要用到服务器的ip和mac信息.但是服务器是架设在linux系统上的,对于多网口,在获取ip时就产生了很大的问题.下面是在windows系统上,java获取本地ip的方法.贴代码: package com.herman.test; import java.net.InetAddress; /** * @see 获取计算机ip * @author Herman.Xiong * @date 2014年5月16日 09:35:38 */ public class

Linux下使用crontab命令以及Python脚本实现自动签到

关于这一部分, 我首先介绍下如何实现使用Python脚本实现签到功能其实,linux下有个命令叫做curl,完全可以完成模拟签到的功能,但是为了练习Python,我就用Python来写了.有这个想法完全是因为实验室的学长开发了一款App,上边收个起床签到,还有排名,为了能那个首签... 言归正传 首先,因为是手机上的App, 所以,我们需要抓包看下它具体的URL以及发送的内容是什么,关于这部分内容我就不在赘述了,我实现的功能主要有模拟发布状态和模拟签到两种功能,两个的URL也是不同的.为了不让学

Linux下常用SVN命令

1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain  --username qinxiaohui 简写:svn co 2.往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加当前目录下所有的php文件) 3.将改动的文件提交到版本库 svn commit -m "L

Linux下内存查看命令

在Linux下面,我们常用top命令来查看系统进程,top也能显示系统内存.我们常用的Linux下查看内容的专用工具是free命令. Linux下内存查看命令free详解: 在Linux下查看内存我们一般用free命令: $ free             total       used       free     shared    buffers     cachedMem:       3266180    3250004      16176          0     1106

[转] 关于linux下通过shell命令(自动)修改用户密码

关于linux下通过shell命令(自动)修改用户密码 2012-04-23 18:47:39 分类: 原文地址:关于linux下(自动)修改用户密码 作者:ubuntuer 本文章总结了如何手动.自动修改本地用户密码及远程机器的用户密码.对做自动化测试提供了自动修改用户密码的原理及方法. 修改本地用户密码:1.交互配置本地用户:以root用户: passwd <username>Changing password for user dewang.New UNIX password: BAD

[转载]linux下使用tar命令

转自:http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.html linux下使用tar命令 解压语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用. 主选项: c 创建新的档案文件.如果用户想备份一个目录或是一些文件,就要选择这个选项.相当于打包. x 从档案文件中释放文件.相当于拆包. t 列出档案文件的内容,查看已经备份了哪些文件. 特别注意

Linux下好玩的命令

Linux下好玩的命令 1.yes命令,输出很多个y,可以用来对付选择很多y/n的应用. 2.banner命令,打印字符标题,就是用字符拼出大字来: 3.ddate命令,把日历转换成其他的什么历: 4.fortune命令,随机输出一句话,或者是一句英文名言,或者是一首唐诗宋词来,如果没有唐诗宋词,那就需要用fortune-zh 5.cal 9 1752,打印日历,但是这个月非常有意思(在9月2日后居然跳到了14日了),这是有原因的: 在1582年,罗马教皇格列高里十三世宣布改历(由于闰年积累的原