5.缓冲区命令: SQL>SELECT ; //把SELECT;保存到缓冲区中 SQL>EDIT; //编辑缓冲区中的内容 SQL>RUN 或者SQL>/ //执行缓冲区中的内容 SQL>CLEAR SCREEN //清除SQLPLUS的屏幕及屏幕缓冲区 6.运行命令 在SQLPLUS中可以使用三种方式运行SQL语句和PL/SQL块:1)命令行方式 2)SQL缓冲区方式 3)脚本文件方式 1)命令行方式: 1.1)以命令行方式运行SQL命令,只需要在输入完SQL语句之后,输入分号(;),或者在新的一行输入前斜线(/),按回车键即可 SQL> SELECT ename,sal FROM emp 2 WHERE deptno = 20; 1.2)以命令行方式运行PL/SQL块,只需要在输入完PL/SQL块之后,在新的一行输入前斜线(/),按回车键即可 SQL> SET SERVEROUTPUT ON SQL> BEGIN 2 DBMS_OUTPUT.PUT_LINE('Hello Oracle!'); 3 END; 4 / 1.3)EXECUTE(或者EXEC)命令,可以执行单条PL/SQL语句,不需要从缓冲区或脚本文件中执行. SQL> SET SERVEROUTPUT ON SQL> EXEC DBMS_OUTPUT.PUT_LINE('Hello '); Hello 2)SQL缓冲区方式: 2.1)RUN命令:显示并运行当前存储在SQL缓冲区中的SQL语句或PL/SQL块,显示运行结果, 并使SQL缓冲区中的最后一行成为当前行 SQL> SELECT ename, sal FROM emp 2 WHERE deptno = 20 3 ; ENAME SAL ---------- ---------- SMITH 800 JONES 2975 SCOTT 3000 ADAMS 1100 FORD 3000 SQL> RUN 1 SELECT ename, sal FROM emp 2 WHERE deptno = 20 3* ENAME SAL ---------- ---------- SMITH 800 JONES 2975 SCOTT 3000 ADAMS 1100 FORD 3000 2.2)/命令:运行当前存储在SQL缓冲区中的SQL命令或PL/SQL块,显示运行结果, 而不显示SQL缓冲区中的SQL命令或PL/SQL块,也不会将SQL缓冲区中的最后一行成为当前行 SQL> SET SERVEROUTPUT ON SQL> BEGIN 2 DBMS_OUTPUT.PUT_LINE('HELLO,ORACLE!'); 3 END; 4 / HELLO,ORACLE! PL/SQL 过程已成功完成。 SQL> / HELLO,ORACLE! PL/SQL 过程已成功完成。 2.3)菜单命令 选择"文件"->"运行",它与RUN命令相同 3)脚本文件方式 3.1)START命令 格式: START filename[.ext] [arg1 arg2 arg3...] 脚本文件:D:\test.sql内容如下: SELECT ename, sal FROM emp WHERE deptno = &1 AND sal > &2; 使用START命令: SQL> START D:\test.sql 20 2500 原值 2: WHERE deptno = &1 新值 2: WHERE deptno = 20 原值 3: AND sal > &2 新值 3: AND sal > 2500 ENAME SAL ---------- ---------- JONES 2975 SCOTT 3000 FORD 3000 3.2)@命令 @命令和START命令类似,区别在于:@命令既可以在SQLPLUS会话内部运行,也可以在命令行运行, 而START命令只能在SQLPLUS会话内运行. 7.替换变量命令 1)使用替换变量:其格式是在变量名称之前加一个&,以便在运行SQL命令时提示用户输入替换数据, 然后按输入数据运行SQL命令,如: SQL> SELECT &a FROM emp 2 WHERE deptno = 20 3 AND job = '&b'; 输入 a 的值: ename 原值 1: SELECT &a FROM emp 新值 1: SELECT ename FROM emp 输入 b 的值: CLERK 原值 3: AND job = '&b' 新值 3: AND job = 'CLERK' ENAME ---------- SMITH ADAMS 2)定义替换变量:事先用DEFINE命令定义替换变量,如: SQL> DEFINE a = CLERK SQL> SELECT ename FROM emp 2 WHERE deptno = 20 3 AND job = '&a'; 原值 3: AND job = '&a' 新值 3: AND job = 'CLERK' ENAME ---------- SMITH ADAMS 3)查看替换变量 SQL> DEFINE a DEFINE A = "CLERK" (CHAR) 4)清除替换变量 SQL> UNDEFINE a 8.与用户通信 可以使用PROMPT命令,PAUSE命令,ACCEPT命令与用户进行通信 1)PROMPT命令用于输出提示信息,以便使用户了解脚本文件的功能和运行情况 2)PAUSE命令用于暂停脚本文件的运行 3)ACCEPT命令可以让用户指定替换变量的类型(如CHAR,NUMBER,DATE),用PROMPT选项指定提示信息, 用HIDE选项隐藏输入,以便于用户输入替换变量 举例如下: 脚本文件:D:\test.sql内容如下: ACCEPT pwd PROMPT '请输入密码' HIDE PROMPT PROMPT 显示XX部门XX工种的员工姓名 PROMPT ========================== PROMPT 按键继续 PAUSE ACCEPT a NUMBER PROMPT '请输入部门:' ACCEPT b CHAR PROMPT '请输入工种:' SELECT ename FROM emp WHERE deptno = &a AND job = '&b'; 该脚本文件运行结果为: SQL> START D:\test.sql 请输入密码********* 显示XX部门XX工种的员工姓名 ========================== 按键继续 请输入部门:20 请输入工种:CLERK 原值 2: WHERE deptno = &a 新值 2: WHERE deptno = 20 原值 3: AND job = '&b' 新值 3: AND job = 'CLERK' ENAME ---------- SMITH ADAMS 9.绑定变量 1)定义绑定变量 可以使用VARIABLE命令来定义绑定变量.当在SQL语句或PL/SQL块中使用绑定变量时, 必须在绑定变量前加冒号(:).当直接给绑定变量赋值时,需要使用EXECUTE命令,例如: SQL> VARIABLE no NUMBER SQL> EXECUTE :no := 7788 PL/SQL 过程已成功完成。 SQL> SELECT ename FROM emp WHERE empno = :no; ENAME ---------- SCOTT 2)输出绑定变量 使用PRINT命令输出绑定变量,例如: SQL> PRINT no NO ---------- 7788 10.自定义SQLPLUS环境 SQL> SHOW ALL //查看所有环境变量 SQL> SHOW linesize pagesize SQL> SET linesize 100 pagesize 24 //linesize代表行宽度,默认为80,pagesize表示每页显示的行数,默认为24 SQL> SHOW arraysize //arraysize用于设置从数据库中一次提取的行数,默认为15 SQL> SET arraysize 25 SQL> SHOW autocommit //autocommit用于设置是否自动提交,默认为OFF SQL> SET autocommit on SQL> SET colsep | //colsep 用于设置在选定列之间的分隔符,默认为空格 SQL> SELECT ename, sal FROM emp WHERE empno = 7788; ENAME | SAL ----------|---------- SCOTT | 3000 SQL>SET heading off //heading表示是否显示列标题,默认为ON SQL> SELECT ename, sal FROM emp WHERE empno = 7788; SCOTT | 3000 SQL> SET serveroutput on //SEVEROUTPUT用于控制是否显示存储过程的输出,默认为OFF SQL> EXEC dbms_output.put_line('hello oracle'); hello oracle PL/SQL 过程已成功完成。 SQL> SET sqlprompt inputSQL> //sqlprompt用来设置SQLPLUS的命令提示符 inputSQL> SQL>SET time on //time是否在SQLPLUS命令提示符前显示系统时间,默认设置为OFF 19:02:35 SQL>
SQL>SET underline = //underline用于设置下划线字符,默认值为"_" SQL>SELECT count(*) FROM emp; COUNT(*) ========== 14 SQL>STORE SET D:\setfile.sql //保存当前的SQLPLUS环境 已创建 file D:\setfile.sql 11.格式化查询结果 1)格式化列 SQL> COLUMN ename HEADING 雇员 JUSTIFY CENTER FORMAT A4 SQL> COLUMN sal HEADING 月薪 JUSTIFY CENTER FORMAT L99999.99 SQL> SELECT ename, sal FROM emp WHERE deptno = 20 AND sal > 2500; 雇员| 月薪 ====|=================== JONE| ¥2975.00
SCOT| ¥3000.00 T | FORD| ¥3000.00 SQL>COLUMN sal CLEAR //恢复列的格式 2)限制重复行 在限制重复行的同时,还可以在各个分组之间插入n个空行,其语法为: BREAK ON break_column SKIP n 跑到新的一页,其语法为: BREAK ON break_column SKIP PAGE 在每行之后插入n个空行,其语法为: BREAK ON ROW SKIP n 在报表之后插入n个空行,其语法为: BREAK ON REPORT SKIP n SQL> BREAK ON deptno SKIP 1 SQL> SELECT deptno, ename, sal FROM emp WHERE sal <2500 2 ORDER BY deptno; DEPTNO ENAME SAL ---------- ---------- ---------- 10 CLARK 2450 MILLER 1300 20 ADAMS 1100 SMITH 800 30 WARD 1250 MARTIN 1250 JAMES 950 TURNER 1500 ALLEN 1600 已选择9行。