sqlplus命令:SQL*PLUS命令的使用大全来源: 发布时间:星期四, 2009年3月19日 浏览:0次 评论:0
="t18">
Oraclesql*plus是和oracle进行交互客户端工具在sql*plus中可以运行sql*plus命令和sql*plus语句
我们通常所说DML、DDL、DCL语句都是sql*plus语句它们执行完后都可以保存在个被称为sql buffer内存区域中并且只能保存条最近执行sql语句我们可以对保存在sql buffer中sql 语句进行修改然后再次执行sql*plus般都和数据库打交道 除了sql*plus语句在sql*plus中执行其它语句我们称的为sql*plus命令它们执行完后不保存在sql buffer内存区域中它们般用来对输出结果进行格式化显示以便于制作报表 下面就介绍下些常用sql*plus命令: 1. 执行个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在个文本文件中这样当要执行这个文件中所有sql语句时用上面任命令即可这类似于dos中批处理 @和@@区别是什么? @等于start命令用来运行个sql脚本文件 @命令当前目录下或指定全路径或可以通过SQLPATH环境变量搜寻到脚本文件该命令使用是般要指定要执行文件全路径否则从缺省路径(可用SQLPATH变量指定)下读取指定文件 @@用在sql脚本文件中用来介绍说明用@@执行sql脚本文件和@@所在文件在同目录下而不用指定要执行sql脚本文件全路径也不是从SQLPATH环境变量指定路径中寻找sql脚本文件该命令般用在脚本文件中 如:在c:\temp目录下有文件start.sql和nest_start.sqlstart.sql脚本文件内容为: @@nest_start.sql - - 相当于@ c:\temp\nest_start.sql 则我们在sql*plus中这样执行: SQL> @ c:\temp\start.sql 2. 对当前输入进行编辑 SQL>edit 3. 重新运行上次运行sql语句 SQL>/ 4. 将显示内容输出到指定文件 SQL> SPOOL file_name 在屏幕上所有内容都包含在该文件中包括你输入sql语句 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出才会在输出文件中看到输出内容 6.显示个表结构 SQL> desc table_name 7. COL命令: 主要格式化列显示形式 该命令有许多选项具体如下: COL[UMN] [{ columneXPr} [ option ...]] Option选项可以是如下子句: ALI[AS] alias CLE[AR] FOLD_A[FTER] FOLD_B[EFORE] FOR[MAT] format HEA[DING] text JUS[TIFY] {L[EFT]C[ENTER]C[ENTRE]R[IGHT]} LIKE { expralias} NEWL[INE] NEW_V[ALUE] variable NOPRI[NT]PRI[NT] NUL[L] text OLD_V[ALUE] variable ONOFF WRA[PPED]WOR[D_WRAPPED]TRU[NCATED] 1). 改变缺省列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME LOC ---------- ---------------------------- --------- 10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location --------- ---------------------------- ----------- 10 ACCOUNTING NEW YORK 2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上: Sql>select * from emp Department name Salary ---------- ---------- ---------- 10 aaa 11 SQL> COLUMN ENAME HEADING ’EmployeeName’ Sql>select * from emp Employee Department name Salary ---------- ---------- ---------- 10 aaa 11 note: the col heading turn o two lines from _disibledevent=>假如拷贝到sql*plus中执行, 就会出现这个命令可以解决该问题 15).设置DBMS_OUTPUT输出 SET SERVEROUTPUT _disibledevent=>定义个用户变量并且可以分配给它个CHAR值 assign the value MANAGER to the variable POS, type: SQL> DEFINE POS = MANAGER assign the CHAR value 20 to the variable DEPTNO, type: SQL> DEFINE DEPTNO = 20 list the definition of DEPTNO, enter SQL> DEFINE DEPTNO ――――――――――――――― DEFINE DEPTNO = ”20” (CHAR) 定义了用户变量POS后就可以在sql*plus中用&POS或&&POS来引用该变量值sql*plus不会再提示你给变量输入值 b. COL[UMN] [{columnexpr} NEW_V[ALUE] variable [NOPRI[NT]PRI[NT]] NEW_V[ALUE] variable 指定个变量容纳查询出列值 例:column col_name _value var_name nopr select col_name from table_name where …….. 将下面查询出col_name列值赋给var_name变量. 个综合例子: 得到个列值两次查询的差(此例为10秒的内共提交了多少事务): column redo_writes _value commit_count select sum(stat.value) redo_writes from v$sesstat stat, v$statname sn where stat.statistic# = sn.statistic# and sn.name = 'user commits'; -- 等待会儿(此处为10秒); execute dbms_lock.sleep(10); veri off select sum(stat.value) - &commit_count commits_added from v$sesstat stat, v$statname sn where stat.statistic# = sn.statistic# and sn.name = 'user commits'; 38. 定义个绑定变量 VAR[IABLE] [variable [NUMBERCHARCHAR (n)NCHARNCHAR (n) VARCHAR2 (n)NVARCHAR2 (n)CLOBNCLOBREFCURSOR]] 定义个绑定变量该变量可以在pl/sql中引用 可以用pr命令显示该绑定变量信息 如: column inst_num heading "Inst Num" _value inst_num format 99999; column inst_name heading "Instance" _value inst_name format a12; column db_name heading "DB Name" _value db_name format a12; column dbid heading "DB Id" _value dbid format 9999999999 just c; prompt prompt Current Instance prompt ~~~~~~~~~~~~~~~~ select d.dbid dbid , d.name db_name , i.instance_number inst_num , i.instance_name inst_name from v$database d, v$instance i; variable dbid number; variable inst_num number; begin :dbid := &dbid; :inst_num := &inst_num; end; / 介绍说明: 在sql*plus中该绑定变量可以作为个存储过程参数也可以在匿名PL/SQL块中直接引用为了显示用VARIABLE命令创建绑定变量值可以用pr命令 注重: 绑定变量区别于变量: 1. 定义思路方法区别 2. 引用思路方法区别 绑定变量::variable_name 变量:&variable_name or &&variable_name 3.在sql*plus中可以定义同名绑定变量和用户变量但是引用思路方法区别 39. &和&&区别 &用来创建个临时变量每当碰到这个临时变量时都会提示你输入个值 &&用来创建个持久变量就像用用命令或带_vlaue字句column命令创建持久变量样当用&&命令引用这个变量时不会每次碰到该变量就提示用户键入值而只是在第次碰到时提示次 如将下面 3行语句存为个脚本文件运行该脚本文件会提示 3次让输入deptnoval值: select count(*) from emp where deptno = &deptnoval; select count(*) from emp where deptno = &deptnoval; select count(*) from emp where deptno = &deptnoval; 将下面 3行语句存为个脚本文件运行该脚本文件则只会提示次让输入deptnoval值: select count(*) from emp where deptno = &&deptnoval; select count(*) from emp where deptno = &&deptnoval; select count(*) from emp where deptno = &&deptnoval; 40.在输入sql语句过程中临时先运行个sql*plus命令(摘自www.itpub.com) # 有没有过这样经历? 在sql*plus中敲了很长命令后, 忽然发现想不起某个列名字了, 假如取消当前命令,待查询后再重敲, 那太痛苦了. 当然你可以另开个sql*plus窗口进行查询, 但这里提供思路方法更简单. 比如说, 你想查工资大于4000员工信息, 输入了下面语句: SQL> select deptno, empno, ename 2 from emp 3 where 这时, 你发现你想不起来工资列名是什么了. 这种情况下, 只要在下行以#开头, 就可以执行条sql*plus命令, 执行完后, 刚才语句可以继续输入 SQL>> select deptno, empno, ename 2 from emp 3 where 6 #desc emp Name Null? Type ----------------------------------------- -------- -------------- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) 6 sal > 4000; DEPTNO EMPNO ENAME ---------- ---------- ---------- 10 7839 KING 41. SQLPlus中快速复制和粘贴窍门技巧(摘自www.cnoug.org) 1) 鼠标移至想要复制内容开始 2) 用右手食指按下鼠标左键 3) 向想要复制内容另角拖动鼠标和Word中选取内容思路方法样 4) 内容选取完毕后(所选内容全部反显)鼠标左键按住不动用右手中指按鼠标右键 5) 这时所选内容会自动复制到SQL*Plus环境最后行 0
相关文章读者评论发表评论 |