本文共 7209 字,大约阅读时间需要 24 分钟。
第十三章 sqlplus命令
1. @或start
执行某个文件中的语句,有些系统可以包含文件路径执行脚本文件时,用COLUMN等命令设置的格式依然有效此命令还可以执行包含ftp、http格式的命令:
@HTTP://machine_name.domain:port/YEAREND.SQL VAL1 VAL2@FTP://machine_name.domain:port/YEAREND.SQL VAL1 VAL2在配置了网络服务器的报告中,可以执行动态脚本:
@HTTP://machine_name.domain:port/SCRIPTSERVER?ENDOFYEAR VAL1 VAL2 2. @@和@差不多如果在脚本中执行@@file_name.ext,sqlplus将在该脚本相同的目录下运行file_name.ext脚本 3. /执行存储在buffer中的最近一次执行的sql或pl/sql块4. ACCEPT或ACC
语法为:ACCEPT 变量名 数据类型 FORMAT 格式 DEFAULT 默认值 PROMPT xxx|NOPROMPT HIDE数据类型包括:[NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE]
日期格式应该是NLS_DATE_FORMAT指定的格式,否则报错如:
密码输入:ACCEPT pswd CHAR PROMPT 'Password: ' HIDE 指定了隐藏属性数字格式输入:
ACCEPT salary NUMBER FORMAT '999.99' DEFAULT '000.0' -PROMPT 'Enter weekly salary: '日期格式输入:
ACCEPT hired DATE FORMAT 'dd/mm/yyyy' DEFAULT '01/01/2003'-PROMPT 'Enter date hired: ' 5.APPEND或A在iSQLPlus不能用语法:APPEND text将内容增加到缓冲区当前行(最后一行)的末尾如果要增加一个分号 需要输入两个分号6.ARCHIVE LOG
需要sysdba或sysoper权限语法:ARCHIVE LOG {LIST | STOP} | {START | NEXT | ALL | integer } [TO destination]显示归档模式,开启、关闭重做日志的归档list是显示
STOP是停止START是开始NEXT是手工手工归档下一个已经填满但未归档的重做日志文件组ALL是手工归档所有填满但未归档的日志文件或日志组integer 使日志序号为n的重做日志文件组归档,可以指定仍然在线的重做日志文件组。如果根据文件号未找到对应文件会报错。
destination 指定归档路径,默认是LOG_ARCHIVE_DEST指定的路径 ARCHIVE LOG 1001 '/vobs/oracle/dbs/arch' 将日志组号为1001的组归档到指定路径 7.ATTRIBUTEATTRIBUTE [type_name.attribute_name [option ...]]where option represents one of the following clauses:ALI[AS] aliasCLE[AR]FOR[MAT] formatLIKE {type_name.attribute_name | alias}ON | OFF设置了某个对象的属性格式后,在会话中一直有效,知道使用clear column或attribute off命令结束。
如:ATTRIBUTE EMPLOYEE_TYPE.LAST_NAME FORMAT A20
设置empolyee_type的last_name属性格式为20个字符宽度 8.BREAK语法:BRE[AK] [ON report_element [action [action]]] ...report_element:{column|expr|ROW|REPORT}action:[SKI[P] n|[SKI[P]] PAGE][NODUP[LICATES]|DUP[LICATES]]功能:
压缩重复行的显示每次有列值变化时跳过一空行在给定列上的值每次变化时或报告结束时输出统计数量NODUP[LICATES]表示重复行出现时仅第一行显示,后面显示空格
还可以接compute命令,进行统计信息的显示。如:
SQL> select * from emp order by deptno;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------ 7839 KING PRESIDENT 1981-11-17 5000.00 10 7782 CLARK MANAGER 7839 1981-6-9 2450.00 10 7934 MILLER CLERK 7782 1982-1-23 5000.00 10 7902 FORD ANALYST 7566 1981-12-3 3000.00 20 7369 SMITH CLERK 7902 1980-12-17 800.00 20 7566 JONES MANAGER 7839 1981-4-2 2975.00 20 7900 JAMES CLERK 7698 1981-12-3 950.00 30 7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30 7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30 7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30 7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30 7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30SQL> break on deptno skip 1SQL> select * from emp order by deptno;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7839 KING PRESIDENT 17-NOV-81 5000 10 7782 CLARK MANAGER 7839 09-JUN-81 2450 7934 MILLER CLERK 7782 23-JAN-82 50007902 FORD ANALYST 7566 03-DEC-81 3000 20
7369 SMITH CLERK 7902 17-DEC-80 800 7566 JONES MANAGER 7839 02-APR-81 29757900 JAMES CLERK 7698 03-DEC-81 950 30
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 有省略……以下例子,按deptno分页,job不同隔一行、薪水不同也隔一行
SQL> break on deptno skip page on job skip 1 on sal skip 1SQL> select * from emp order by deptno,job,sal;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7934 MILLER CLERK 7782 23-JAN-82 5000 10 7782 CLARK MANAGER 7839 09-JUN-81 2450 7839 KING PRESIDENT 17-NOV-81 5000
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7369 SMITH CLERK 7902 17-DEC-80 800 7566 JONES MANAGER 7839 02-APR-81 2975
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7900 JAMES CLERK 7698 03-DEC-81 950 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 7654 MARTIN 7698 28-SEP-81 14007844 TURNER 7698 08-SEP-81 1500 0
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
12 rows selected.
9.BTITLE语法:BTI[TLE] [printspec [text | variable] ...] | [ON | OFF]格式包括:BOLDCE[NTER]COL nFORMAT textLE[FT]R[IGHT]S[KIP] [n]TAB n设置页眉信息
10.CHANGE语法:C[HANGE] sepchar old [sepchar [new [sepchar]]]iSQLPlus中不能用更改缓冲区中的内容old,改为new11.CLEAR或CL
后面的选项包括:BRE[AKS]BUFF[ER]COL[UMNS]COMP[UTES]SCR[EEN]SQLTIMI[NG]清空当前设置
12.COLUMN
选项包括:ALI[AS] aliasCLE[AR]ENTMAP {ON | OFF}FOLD_A[FTER] html相关FOLD_B[EFORE]FOR[MAT] format 列内容格式HEA[DING] text 该列标题JUS[TIFY] {L[EFT] | C[ENTER] | R[IGHT]}LIKE {expr | alias} 参照某列的格式NEWL[INE] 显示内容前空一行NEW_V[ALUE] variableNOPRI[NT] | PRI[NT] 不输出某一行NUL[L] text 空值如何显示OLD_V[ALUE] variableON | OFF OFF将取消所有格式限制WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED] 对于长度超过限制的内容如何处理,wrap是分行,word_wrap表示在保证单词不跨行的前提下分行显示,tru表示截断
数字格式的详细说明见文档313页
如:
COLUMN REMARKS FORMAT A20 WRAP结果为:REMARKS--------------------This order must be shipped by air freight to ORDCOLUMN REMARKS FORMAT A20 WORD_WRAP
结果为:REMARKS--------------------This order must be shipped by air freightt to ORD COLUMN REMARKS FORMAT A20 TRUNCATE结果为:REMARKS--------------------This order must be s 13.COMPUTE语法:
COMP[UTE] [function [LAB[EL] text] ...OF {expr | column | alias} ...ON {expr | column | alias | REPORT | ROW} ...]如:计算每份工作的salary的总和
COMPUTE SUM LABEL 'TOTAL' OF SALARY ON JOB_ID;SELECT JOB_ID, LAST_NAME, SALARY
FROM EMP_DETAILS_VIEWWHERE JOB_ID IN ('AC_MGR', 'SA_MAN')ORDER BY JOB_ID, SALARY; 14.CONNECT语法:CONN[ECT] { logon | / } [AS {SYSOPER | SYSDBA}] 15.COPY8i以后不用 16.DEFINEDEF[INE] [variable] | [variable = text]所定义变量的值在以下操作前不会改变:输入一个新的值undefine撤销定义accept接受该值使用NEW_VALUE或OLD_VALUE进行调用,并用select调用退出sqlplussqlplus中默认定义值可以通过如下例子理解:
SQL> define _connect_identifier
DEFINE _CONNECT_IDENTIFIER = "testdb" (CHAR)SQL> define _DATEDEFINE _DATE = "26-DEC-12" (CHAR)SQL> define _editorDEFINE _EDITOR = "ed" (CHAR)SQL> define _o_releaseDEFINE _O_RELEASE = "1102000100" (CHAR)SQL> define _PRIVILEGE 如果是sys等,得到的可能是AS SYSDBA 或AS SYSOPERDEFINE _PRIVILEGE = "" (CHAR)SQL> define _sqlplus_releaseDEFINE _SQLPLUS_RELEASE = "1102000100" (CHAR)SQL> define _USERDEFINE _USER = "SCOTT" (CHAR)
17.DEL
DEL [n | n m | n * | n LAST | * | * n | * LAST | LAST]iSQLPlus中不可用 18.DESCRIBEDESC[RIBE] {[schema.]object[@connect_identifier]}得到表、视图、同义词的列,包声明中的过程和函数信息,类型的信息19.DISCONNECT
断开连接,不退出sqlplus环境 20.EDITiSQLPlus中不能用ED[IT] [file_name[.ext]]默认在ORACLE_PATH中查找文件,找不到则到当前目录查找,再找不到则报错如果未指定文件名,表示编辑当前缓冲区内容,该内容默认存放在AGIEDT.BUF文件中
21.EXECUTE
EXEC[UTE] statement执行pl/sql语句 22.EXIT{EXIT | QUIT} [SUCCESS | FAILURE | WARNING | n | variable | :BindVariable] [COMMIT |ROLLBACK] 23.GETGET [FILE] file_name[.ext] [LIS[T] | NOL[IST]]将操作系统文件放入sql buffer24.HELP
帮助 25.HOSTHO[ST] [command]到操作系统环境执行命令来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26451536/viewspace-753596/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26451536/viewspace-753596/