输入并执行命令
在命令行,键入命令并回车来执行。对于不同的操作系统,大小写敏感性是不同的。有三种类型的命令,在后续行中继续一个命令、结束或执行一个命令的格式是不同的。
1. SQL命令,用于操作DB的数据。
2. PL/SQL块,同上。
3. SQL*Plus命令,用于格式化查询结果、设置参数、编辑和存储上述两种命令。
SQL缓冲区
缓冲区保存最近一次输入的SQL或者PL/SQL命令,直到被最新的这两种命令替换。
LIST:查看被保存的命令。
RUN:运行这个命令,在打印命令之后。
/;直接运行这个命令。
查看表或者PL/SQL定义
-
DESCRIBE table_name
-
-
SQL> create or replace function afunc (f1 varchar2, f2 number) return number as
-
begin
-
if (length(f1) > f2) then
-
return 1;
-
else
-
return 0;
-
end if;
-
end;
-
/ 2 3 4 5 6 7 8 9
-
Function created.
-
-
SQL> DESCRIBE afunc
-
FUNCTION afunc RETURNS NUMBER
-
Argument Name Type In/Out Default?
-
------------------------------ ----------------------- ------ --------
-
F1 VARCHAR2 IN
-
F2 NUMBER IN
运行SQL命令
在命令行,允许把一个命令切分为多行进行输入。比如,可以把一个长SQL命令分成几个字句,并分成多行来增加可读性。
结束一个命令有以下几种方式:分号;单独的/;空白行。前两种执行命令并缓存,第三种默认情况下仅缓存(可以SET SQLBLANKLINES更改默认行为)
运行PL/SQL块
和SQL命令不同,分号和空白行会被认为是语句的一部分,而不会执行整个块。结束块是用一个单独一行的点号"." 通过DECLARE或者BEGIN来进入PL/SQL模式,或者创建函数的SQL语句(比如CREATE PROCEDURE)。
键入的子程序被存储在SQL缓存中,输入RUN或者/ 可以运行。SQL*Plus会把完整的PL/SQL子程序发送给DB来运行。
运行SQL*Plus命令
SQL*Plus的语法是特殊的,不需要以分号来结尾,回车即运行。如果要分行输入的时候,需要在前一行的结尾加一个连字符(-)。SQL*Plus会把-当作连字符处理,这样的后果就是SQL语句中处于行末尾的连字符也被忽略掉了,所以对于需要的连字符,不能置于行末尾。
运行操作系统命令
使用HOST命令,后跟系统命令就可以执行这个系统命令,这是一个很方便的查看系统环境的方法。需要注意的是,这种方式运行的命令不会影响当前的会话,但是会影响紧跟着之后启动的会话。比如
host export ORACLE_SID=newone; sqlplus / as sysdba
系统变量 -- 影响命令执行的参数
系统变量,也叫SET变量,影响着SQL*Plus执行命令的方式和行为。他们控制的一些列的状态,包括列宽,页面尺寸,是否显示条目个数等。系统变量的设置使用SET命令,查看系统变量使用SHOW命令。
自动提交改动
通过数据库操作语言(Database Manipulation Language DML)命令UPDATE、INSERT和DELETE命令来对DB信息进行更改,单独使用或者在PL/SQL中。这些改动不会永远的应用于DB,除非运行SQL COMMIT命令,或者数据库控制语言(Database Control Language - DCL)或者数据库定义语言(Database Definition Language - DDL)命令,或者使用自动提交功能。自动提交功能会自动提交待定的改动,当设置的条件达到时,条件是特定数量的成功DML事务(UPDATE、INSERT、DELETE或PL/SQL)。另外,当成功退出SQL*Plus时,改动会被提交。
SET AUTOCOMMIT IMMEDIATE|ON :自动提交每个改动
SET AUTOCOMMIT 10 :10个DML命令之后自动提交
SET AUTOCOMMIT OFF :关闭自动提交
编辑脚本
可以使用系统编辑器来编辑脚本。可以把脚本定义语句包含到用户或站点配置文件中。
DEFINE _EDITOR = vi
EDIT MYFILE
文件被自动添加.SQL扩展名,除非明确定义了扩展名。当使用编辑器的保存后,文件被保存在当前目录,再次调用EDIT MYFILE可以对文件进行修改。每个SQL语句都需要以分号结尾,并在文件结尾以单独一行的一个斜杠结尾
也可以在plus命令行上面编辑缓冲区中的SQL或是PL/SQL命令。
Command
|
Purpose
|
A[PPEND] text
|
添加文本到缓冲区当前行尾
|
C[HANGE] /old/new
|
在当前行用新的文本替换旧的文本
|
C[HANGE] /text
|
从当前行删除文本
|
CL[EAR] BUFF[ER]
|
从SQL缓冲区中删除所有文本
|
DEL
|
删除当前行
|
DEL n
|
删除第N行
|
DEL *
|
删除当前行
|
DEL n *
|
删除第N行到当前行
|
DEL LAST
|
删除最后一行
|
DEL mn
|
删除m到n行
|
DEL * n
|
删除
当前行到第n行
|
I[NPUT]
|
在当前行之后添加一行
|
I[NPUT] text
|
在当前行之后添加包含text的一行
|
L[IST]
|
显示缓冲区中的所有行
|
L[IST] n
|
显示缓冲区中的第n行
|
LIST *
|
显示缓冲区中的当前行
|
LIST n *
|
显示缓冲区中的第n行到当前行
|
LIST LAST
|
显示缓冲区中的最后一行
|
LIST mn
|
显示缓冲区中的第m到din行
|
LIST * n
|
显示缓冲区中的当前行到第n行
|
R[UN]
|
执行当前缓冲区的命令
|
/
|
执行当前缓冲区的命令
|
N
|
指定第n行为当前行
|
N text
|
用text替换当前行
|
0 text
|
在第一行之前插入一行
|
执行脚本
START
命令用来执行脚本文件。无扩展名时,会默认寻找.sql文件。@和@@命令实现同样功能。SET ECHO ON|OFF影响执行脚本的行为,前者会输出所有命令而后者不会。
执行完成后,脚本中的最后一个SQL或者PL/SQL命令会留在缓冲区。
格式化列
通过SQL*Plus COLUMN命令,可以按照用户的需要来定制查询结构的列头,或者定制数据输出的格式。
COLUMN column_name HEADING column_heading :改变列头的名称
COLUMN column_name CLEAR :应用默认设置
COLUMN column_name HEADING 'more words' :多词列头
COLUMN column_name HEADING 'two|line' :分行显示
SET UNDERLINE = :更改分隔符
此外还可以对数字,日期数据进行格式化处理
阅读(2772) | 评论(0) | 转发(2) |