通过指定的参数,运行指定的命令文件
ACC[EPT] 变量 [DEF[AULT] 值] [PROMPT 文本 | NOPR[OMPT]]
允许用户输入置换变量的值
CL[EAR] [SCR[EEN]]
清除屏幕
CL[EAR] SQL
清除 SQL 缓冲区
COL[UMN] [列] [格式] [NEW_VALUE 变量]
定义一个列的格式,显示一个列的格式,或者显示所有列格式
CON[NECT] [用户名/口令@数据库]
带有指定用户连接到数据库
DEF[INE] [变量] [ = 文本]
定义置换变量,显示一个变量,或者显示所有置换变量。
DESC[RIBE] 对象
给指定对象一个描述
DISC[CONNECT]
从数据库断开
EDIT
显示文本编辑器以编辑 SQL 缓冲区
EXEC[UTE] 过程
运行指定的过程
EXIT [APPLICATION]
退出正在运行的脚本或关闭命令窗口,添加APPLICATION 参数也将关闭 PL/SQL Developer 。
GET [文件名]
载入命令文件到编辑器
HOST [命令]
执行主机命令
HELP [关键词]
对关键词提供 SQL 帮助
PAUSE [信息]
显示信息和暂停,直到用户按确定或取消按钮为止
PRI[NT] [变量]
显示绑定变量或所有绑定变量的值
PROMPT [文本]
显示指定文本
QUIT [APPLICATION]
退出正在运行的脚本或关闭命令窗口,添加APPLICATION 参数也将关闭 PL/SQL Developer 。
R[UN]
运行 SQL 缓冲区
REM[ARK] [文本]
一个注释行
SET AUTOP[RINT] [ON | OFF]
确定绑定变量在运行了 SQL 语句或 PL/SQL 块以后是否自动地被显示出来。
SET COLSEP [分隔符 | OFF]
确定了列分隔符(默认 = “ ”)。
SET CON[CAT] [字符 | ON | OFF]
确定终止置换变量参照的字符(默认=.)
SET DEF[INE] [字符 | ON | OFF]
确定开始置换变量参照的字符(默认=&)
SET ECHO [ON | OFF]
确定在脚本里已执行的命令是否被显示出来
SET ESC[APE] [字符 | ON | OFF]
确定中断开始置换变量参照字符的字符(默认=\)
SET FEED[BACK] [ON | OFF]
确定 SQL 语句受影响行数是否被显示出来
SET HEA[DING] [ON | OFF]
确定在结果集列上面的标题是否被显示出来
SET LONG [宽度]
确定一个 LONG 列的最大显示宽度
SET NUM[WIDTH] [宽度]
确定不带精度的数字列的最大显示宽度
SET PAGES[IZE] [大小]
确定在标题被重复以前的结果集的显示行数
SET PROMPT [提示]
替换标准的 SQL> 提示,改为你也能使用变量 [user] 、 [db] 或 [connection] 的文字文本。此外,你还可以包括一个绑定变量( set prompt :bind_var_name )。
SET SCAN [ON | OFF]
确定置换变量是否应该被扫描
SET SERVEROUT[PUT] [ON | OFF] [SIZE n]
确定调用 dbms_output.put_line 的输出是否被显示出来,并且输出缓冲区的大小是多少。
SET SPOOL*DIRECTORY [目录]
确定如果 SPOOL 命令没有指定一个绝对路径那么假脱机文件应该被储存在哪一个目录里。
SET TERM[OUT] [ON | OFF]
确定已运行的 SQL 语句的输出是否被显示出来
SET TIMI[NG] [ON | OFF]
确定关于已运行的 SQL 语句的计时信息是否被显示出来
SET VER[IFY] [ON | OFF]
确定当被用于 SQL 语句或 PL/SQL 块的时候置换变量是否被显示出来。
SHO[W] ERR[ORS] [类型名]
显示以前编译或者指定对象的错误
SHO[W] REL[EASE]
显示当前连接的 版本信息
SHO[W] SQLCODE
显示已运行的 SQL 语句的结果代码
SHO[W] USER
显示当前连接的用户名
SPO[OL] [文件名 | OFF]
开始或停止假脱机
STA[RT] [文件名] [参数列表]
通过指定的参数,运行指定的命令文件
STORE SET [文件名]
在[文件名]里所有选项的值,你可以以后运行这个文件以恢复这些选项。
UNDEF[INE] 变量
不定义已设定的置换变量
VAR[IABLE] [变量] [数据类型]
定义一个绑定变量,显示一个绑定变量或显示所有的绑定变量。
WHENEVER [OSERROR | SQLERROR] [动作]
指定一个动作,用于无论 OS 或 SQL 何时出现错误。这个动作既可以是 EXIT 又可以是 CONTINUE ,随便地被 COMMIT 或 ROLLBACK 跟随着。
上面所有这些命令函数都与 SQL*Plus 相同。下面的命令是 PL/SQL Developer 特有的:
命令
含义
BEAUT[IFY] 文件 | 对象
使用当前规则或者 SET BEAUTIFIERRULES 命令指定的规则来美化指定文件或数据库对象。
BROWSE 对象
在对象浏览器里选择对象
EDIT 对象
打开带有对象定义的可编辑窗口
EDITD[ATA] 表 | 视图
为带有可编辑结果集的表或视图打开一个 SQL 窗口
EXPORT[DATA] 表
为指定表打开导出工具
INFO
显示关于连接的信息
PROP[ERTIES] 对象
为指定对象显示一个属性窗口
QUERY[DATA] 表 | 视图
为带有只读结果集的表或视图打开一个 SQL 窗口
REC[OMPILE] 对象
重新编译对象
SET BEAUT[IFIERRULES] [文件]
临时使用来自于指定文件的美化器规则,这可以带着BEAUTIFY 命令使用。
SET COL[WIDTH] [宽度]
确定结果集里的最大列宽。如果 Width = 0 ,则不限制宽度。默认为 80 。
SET EXEC[PAUSE] [ON | OFF]
在下一个命令暂停执行( ON ),或者在下一个命令正常继续执行( OFF )。
SQLPLUS
带有当前文件调用 SQL*Plus 。
TEST 程序单元
对于指定的程序单元,打开一个带有标准脚本的窗口。
VIEW 对象
打开一个带有对象定义的只读窗口
生产环境的db没法直接用开发工具(比如TOAD、PL/SQL Developer )来连接并进行数据操作,因为有很严格的权限控制(为了db安全考虑),我们开发人员能用的唯一工具就是通过sshterm登录到db server上面,然后用指定的受限用户名通过sqlplus登录,然后进行操作;习惯了使用开发工具的便利,初次回到sqlplus的话会非常不习惯,但只要我们设置一些简单的参数,就可以大大提高sqlplus的可用性;
另外,就是需要从db中导出数据到文件,默认情况下,导出文件中会有很多的垃圾信息,我们需要将他清理掉,此时相关的设置就很有作用啦;
sqlplus的优化主要是通过两种方式来进行:
1、系统参数设置,通过set操作实现(可以搭配show查看配置项,show all可查看所有系统参数设置列表),比如set linesize 180;
2、显示格式设置,通过column操作实现,比如column aa format a32;
3、Session参数设置,通过SQL操作实现,比如alter session set ...;
下面介绍下常用sqlplus set参数列表,更全面的set集合请参考oracle官方文档;
set linesize 180 设置每行显示的字符总数
set pagesize 100 设置每页显示的行数
set feedback on/off 设置是否显示已选择XX行
set heading on/off 设置是否显示列名
set time on/off 设置是否显示当前系统时间
set timing on/off 设置是否显示每条SQL执行消耗的时间
set termout on/off 设置在执行sql文件时是否在控制台打印相关信息
set trimout on/off 设置是否去除标准输出每行的拖尾空格
set trimspool on/off 设置是否去除spool输出文件中每行的拖尾空格
显示格式的设置主要由column命令完成,其语法为:
column columnName [format format] [heading heading]
比如column login_id format a32 heading 旺旺ID
其中heading 旺旺ID 表示结果集中login_id字段名显示为:旺旺ID;
功能与SELECT LOGIN_ID AS 旺旺ID FROM ...一样;
Session参数的设置就很专业和复杂了,一般开发人员不会涉及到,但是有两个参数我们可以自行设置;
其一是设置日期时间型字段的显示格式,在sqlplus中执行一下命令即可:
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
其二是设置当前session的字符编码(编码随各DB会有不同),以便能够显示中文;比如执行以下命令:
alter session set nls_lang='AMERICAN_AMERICA.ZHS16GBK';
当然,这两个参数也可以直接放在OS当前用户的环境变量中,这样就不必每次进入sqlplus之后还需要重复执行以上的命令,会方便很多;