SQLPlus环境设置详解

一、替换变量

1.当我们在SQL*Plus中执行命令时,可以使用替换变量,让用户每次执行语句前,为语句传送不同的数据。例如:

gyj@OCM> select * from t1 where id=&id;
Enter value for id: 1            --Oracle首先让我们输入id的值,此处输入1
old   1: select * from t1 where id=&id
new   1: select * from t1 where id=1
ID NAME
---------- ----------
1 gyj1

在你输入值后,Oracle将&id换为你所输入的值,然后,按你所输入的值执行。这就是替换变量。同样的一条语句,你可以每次输入不同的值,返回的就是不同的结果。其实替换变量类似于编程语言中的变量的简单形式。
2.一条语句中,可以有多个替换变量,而且,一条语句中,除了开头第一个单词,语句中的任何一部分,都可以是替换变量。比如:

gyj@OCM> select * from t1 where &a &b &c;
Enter value for a: id
Enter value for b: =
Enter value for c: 1
old   1: select * from t1 where &a &b &c
new   1: select * from t1 where id = 1
ID NAME
---------- ----------
1 gyj1

(显示结果和上面一样)

3.除了语句的第一个单词外,我甚至可以将整个语句,都定为替换变量:

gyj@OCM> select &a &b &c &d &e &f &g;
Enter value for a: *
Enter value for b: from
Enter value for c: t1
Enter value for d: where
Enter value for e: id
Enter value for f: =
Enter value for g: 1
old   1: select &a &b &c &d &e &f &g
new   1: select * from  t1 where id = 1
ID NAME
---------- ----------

1 gyj1

注意,SELECT一定不可以是替换变量。语句中第一个单词不可以是替换变量,其他部分都可以。因此替换变量的使用是非常灵活的。

4.对于字符型的数据,要注意单引号的问题,我想显示姓名等于某个人的行,可以使用如下语句:

gyj@OCM> select * from t1 where name='&n';
Enter value for n: gyj1
old   1: select * from t1 where name='&n'
new   1: select * from t1 where name='gyj1'
ID NAME
---------- ----------

1 gyj1

注意:我在’&n’外加的有单引号,那么,我在为n输入值时,就不必再gyj1的外面,加单引号。

如果&n的外面,我没有加单引号的话,如下:

gyj@OCM> select * from t1 where name=&n;
Enter value for n: 'gyj1'
old   1: select * from t1 where name=&n
new   1: select * from t1 where name='gyj1'
ID NAME
---------- ----------

1 gyj1

(显示结果同上)
注意: &n外面没有单引号,那么在输入gyj1时,就要在gyj1之外,加单引号。
二、替换变量的定义和取消
我们可以使用define  变量 = 值 ,事先定义替换变量。如SQL> define a=1 ,这条语句后面可以加“;”,也可以不加“;”号。

定义变量后,可以在任何地方通过&a来引用变量,如:

gyj@OCM> define a=1
gyj@OCM> select * from t1 where id=&a;
old   1: select * from t1 where id=&a
new   1: select * from t1 where id=1
ID NAME
---------- ----------

1 gyj1

和以前使用替换变量相比,少了“输入 a 的值: ”,这次,a的值在前面已经用define定义过了,不必再输入。
变量a可以返复使用,直到使用undefine  变量 命令取消它。下面试一下。

我先用如下语句输出a的值:

gyj@OCM> select &a from dual;
old   1: select &a from dual
new   1: select 1 from dual
1
----------

1

a的值目前还存在。在使用时,不须先为a输入值。下面我取消a。
SQL> undefine a

取消之后,我再次执行和上面同样的命令,输出a的值:

gyj@OCM> undefine a
gyj@OCM> select &a from dual;
Enter value for a:  
(这次要求我输入a的值了,因为a已经被取消)
 还一点要说明一下,就是替换变量只针对一个会话,在A会话中定义的值的变量,在B会话访问不到它的值。下面我们试一下:
在会话1:SQL> define a=1
在会话1:SQL> select &a from dual;
old   1: select &a from dual
new   1: select 1 from dual
1
----------

1

已经可以使用变量a了。下面换到会话2:
在会话2:SQL> select &a from dual;
输入 a 的值:(要求你重新为a输入值,在会话1中为变量定义的值,在会话2中访问不到)
三、“&&”与替换变量:

一个“&”(念and)号的替换变量,如果以前没有Define定义过。在本次使用完后,将自动取消。而双“&&”号的替换变量,在本次使用完后,输入的值将一直保持,直到用Undefine取消为止。测试如下:

gyj@OCM> select &&a from dual;
Enter value for a: 1  
old   1: select &&a from dual
new   1: select 1 from dual
1
----------

1

第一次为&&a输入值为1,再次显示a的值,无论是select &&a from dual;  还是select &a from dual; 都不需要再为a输入值。直到undefine。
四、SET  VERIFY  ON | OFF
在替换变量使用过程中,每次都会显示一个“原值”,然后显示被命令替换成了“新值”,使用SET VERIFY,可以打开或关闭这个提示信息。默认状态是打开。我把它关闭看看效果:
SQL> set verify off
说明一下,普通的命令,在结尾处都应有一个“;”分号,而Define、Undefine和SET开头的命令,这些命令专门针对SQL*Plus,在其他环境中不能使用。这些专属于SQL*Plus的命令,不必在结尾处加分号。当然如果结尾加分号了,也不会报错。

时间: 2024-10-31 07:28:10

SQLPlus环境设置详解的相关文章

UITabBar设置详解

UITabBar设置详解   效果图   说明 1. 设置tabBarItem中的图片以及标题 2. 设置标题文本样式 3. 修改tabBar背景色   源码 https://github.com/YouXianMing/UITabBarControllerIcon   细节 设置标题文本样式 修改tabBar背景色 真实图片呈现  

MySQL 中修改密码及访问限制设置详解

mysql|访问|详解 MySQL中修改密码及访问限制设置详解 MySQL是一个真正的多用户.多线程SQL数据库服务器.MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成.由于其源码的开放性及稳定性,且与网站流行编?挥镅?PHP的完美结合,现在很多站点都利用其当作后端数据库,使其获得了广泛应用.处于安全方面的考虑,需要为每一用户赋于对不同数据库的访问限制,以满足不同用户的要求.下面就分别讨论,供大家参考. 一.MySQL修改密码方法总结 首

host文件设置详解

  host文件设置详解 有很多朋友不清楚Host文件是什么东西?其实hosts文件是用来记录主机ip地址和主机名的对应关系,建立后就可以用主机名来访问主机,而不必记ip地址了.(HOSTS就是本地的一个简易 DNS,它优先于DNS服务器的查询;呵呵,我就是这么认为的.) winxp.win2k系统中存放在windows系统目录中的system32driversetc下面,win98在windows系统目录中下面.(windows系统目录一般就是c:windows). hosts文件是一个纯文本

CenterOS 中安装Redis及开机启动设置详解_Linux

CenterOS 中安装Redis及开机启动设置详解 从官方下载最新Redis进行安装,官网地址:http://redis.io/download $ wget http://download.redis.io/releases/redis-3.2.3.tar.gz $ tar xzf redis-3.2.3.tar.gz $ cd redis-3.2.3 $ make $ make install Redis启动 RedisServer /path/to/redis.conf Redis关闭(

Centos6.5搭建java开发环境配置详解_Linux

一.安装jdk 1.查看Linux自带的JDK是否已安装 java –version 如果出现openjdk,最好还是先卸载掉openjdk,在安装sun公司的jdk. 2.查看jdk信息 rpm -qa|grep java 3.卸载OpenJDK,执行以下操作: rpm -e --nodeps tzdata-java-2012c-1.el6.noarch rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-1.45.1.11.1.el6.x86_64 4.新

Docker快速入门以及环境配置详解_docker

前言 数据科学开发环境配置起来让人头疼,会碰到包版本不一致.错误信息不熟悉和编译时间漫长等问题.这很容易让人垂头丧气,也使得迈入数据科学的这第一步十分艰难.而且这也是一个完全不常见的准入门槛. 还好,过去几年中出现了能够通过搭建孤立的环境来解决这个问题的技术.本文中我们就要介绍的这种技术名叫Docker.Docker能让开发者简单.快速地搭建数据科学开发环境,并支持使用例如Jupyter notebooks等工具进行数据探索. 简介 Docker 最初 dotCloud 公司内部的一个业余项目

StrutsPrepareAndExecuteFilter过滤器和url-pattern设置详解

1.strut 过滤器 FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.! StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.! 这样的改革当然是有好处的.! 为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html! 那我现在有需求

Docker 实现在线集成开发环境实例详解_docker

Docker 实现在线集成开发环境 由于,学校有流量限制,每月10G,超流量后限速为50KB/s,作为一个正常人类,这点流量肯定是不够用的,所以我 需要一个几乎没有流量.网速限制的开发环境. 虽然ssh连接服务器,在服务器终端下开发几乎不限速.不限流,但是开发全靠vim显然有些"不亲民",大部分人对命令行界面并不熟悉. 终端下的开发环境搭建起来也是颇为麻烦,所以本文将用 三步 教你打造一个界面美观.功能强大的.菜鸟都可以轻松搭建的 在线集成开发环境 . 目标: 一键部署,一句命令完成在

基于Vue2的移动端开发环境搭建详解_javascript技巧

前言 vue2.0发布了,那么还在用vue1.x的你,是不是也有所心动呢?下面这篇文章就给大家详细介绍基于Vue2的移动端开发环境搭建的详细步骤,下面来一起看看吧. 一.vue-cli 首先还是介绍我们的脚手架工具,因为它能让我们省去大部分的配置时间,这里只给出简单步骤,保证你的命令顺利运行的前提是安装最新版本的 node 和 npm,这里不赘述升级流程 全局安装 vue-cli npm install vue-cli -g 借此也全局安装一个 webpack npm install webpa