Chinaunix首页 | 论坛 | 博客
  • 博客访问: 563289
  • 博文数量: 287
  • 博客积分: 27
  • 博客等级: 民兵
  • 技术积分: 547
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-01 20:20
文章分类

全部博文(287)

文章存档

2015年(1)

2014年(95)

2013年(90)

2012年(101)

分类: Oracle

2014-03-10 21:55:40

输入并执行命令


在命令行,键入命令并回车来执行。对于不同的操作系统,大小写敏感性是不同的。有三种类型的命令,在后续行中继续一个命令、结束或执行一个命令的格式是不同的。
1. SQL命令,用于操作DB的数据。
2. PL/SQL块,同上。
3. SQL*Plus命令,用于格式化查询结果、设置参数、编辑和存储上述两种命令。

SQL缓冲区


缓冲区保存最近一次输入的SQL或者PL/SQL命令,直到被最新的这两种命令替换。
LIST:查看被保存的命令。
RUN:运行这个命令,在打印命令之后。
/;直接运行这个命令。

查看表或者PL/SQL定义


  1. DESCRIBE table_name

  2. SQL> create or replace function afunc (f1 varchar2, f2 number) return number as
  3. begin
  4. if (length(f1) > f2) then
  5. return 1;
  6. else
  7. return 0;
  8. end if;
  9. end;
  10. / 2 3 4 5 6 7 8 9
  11. Function created.

  12. SQL> DESCRIBE afunc
  13. FUNCTION afunc RETURNS NUMBER
  14.  Argument Name Type In/Out Default?
  15.  ------------------------------ ----------------------- ------ --------
  16.  F1 VARCHAR2 IN
  17.  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 = :更改分隔符
此外还可以对数字,日期数据进行格式化处理
阅读(478) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~