5.緩沖區(qū)命令: SQL>SELECT ; //把SELECT;保存到緩沖區(qū)中 SQL>EDIT; //編輯緩沖區(qū)中的內(nèi)容 SQL>RUN 或者SQL>/ //執(zhí)行緩沖區(qū)中的內(nèi)容 SQL>CLEAR SCREEN //清除SQLPLUS的屏幕及屏幕緩沖區(qū) 6.運行命令 在SQLPLUS中可以使用三種方式運行SQL語句和PL/SQL塊:1)命令行方式 2)SQL緩沖區(qū)方式 3)腳本文件方式 1)命令行方式: 1.1)以命令行方式運行SQL命令,只需要在輸入完SQL語句之后,輸入分號(;),或者在新的一行輸入前斜線(/),按回車鍵即可 SQL> SELECT ename,sal FROM emp 2 WHERE deptno = 20; 1.2)以命令行方式運行PL/SQL塊,只需要在輸入完P(guān)L/SQL塊之后,在新的一行輸入前斜線(/),按回車鍵即可 SQL> SET SERVEROUTPUT ON SQL> BEGIN 2 DBMS_OUTPUT.PUT_LINE('Hello Oracle!'); 3 END; 4 / 1.3)EXECUTE(或者EXEC)命令,可以執(zhí)行單條PL/SQL語句,不需要從緩沖區(qū)或腳本文件中執(zhí)行. SQL> SET SERVEROUTPUT ON SQL> EXEC DBMS_OUTPUT.PUT_LINE('Hello '); Hello 2)SQL緩沖區(qū)方式: 2.1)RUN命令:顯示并運行當前存儲在SQL緩沖區(qū)中的SQL語句或PL/SQL塊,顯示運行結(jié)果, 并使SQL緩沖區(qū)中的最后一行成為當前行 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緩沖區(qū)中的SQL命令或PL/SQL塊,顯示運行結(jié)果, 而不顯示SQL緩沖區(qū)中的SQL命令或PL/SQL塊,也不會將SQL緩沖區(qū)中的最后一行成為當前行 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內(nèi)容如下: 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命令類似,區(qū)別在于:@命令既可以在SQLPLUS會話內(nèi)部運行,也可以在命令行運行, 而START命令只能在SQLPLUS會話內(nèi)運行. 7.替換變量命令 1)使用替換變量:其格式是在變量名稱之前加一個,以便在運行SQL命令時提示用戶輸入替換數(shù)據(jù), 然后按輸入數(shù)據(jù)運行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內(nèi)容如下: ACCEPT pwd PROMPT '請輸入密碼' HIDE PROMPT PROMPT 顯示XX部門XX工種的員工姓名 PROMPT ========================== PROMPT 按Enter>鍵繼續(xù) PAUSE ACCEPT a NUMBER PROMPT '請輸入部門:' ACCEPT b CHAR PROMPT '請輸入工種:' SELECT ename FROM emp WHERE deptno = a AND job = 'b'; 該腳本文件運行結(jié)果為: SQL> START D:\test.sql 請輸入密碼********* 顯示XX部門XX工種的員工姓名 ========================== 按Enter>鍵繼續(xù) 請輸入部門: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環(huán)境 SQL> SHOW ALL //查看所有環(huán)境變量 SQL> SHOW linesize pagesize SQL> SET linesize 100 pagesize 24 //linesize代表行寬度,默認為80,pagesize表示每頁顯示的行數(shù),默認為24 SQL> SHOW arraysize //arraysize用于設(shè)置從數(shù)據(jù)庫中一次提取的行數(shù),默認為15 SQL> SET arraysize 25 SQL> SHOW autocommit //autocommit用于設(shè)置是否自動提交,默認為OFF SQL> SET autocommit on SQL> SET colsep | //colsep 用于設(shè)置在選定列之間的分隔符,默認為空格 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用來設(shè)置SQLPLUS的命令提示符 inputSQL> SQL>SET time on //time是否在SQLPLUS命令提示符前顯示系統(tǒng)時間,默認設(shè)置為OFF 19:02:35 SQL>
SQL>SET underline = //underline用于設(shè)置下劃線字符,默認值為"_" SQL>SELECT count(*) FROM emp; COUNT(*) ========== 14 SQL>STORE SET D:\setfile.sql //保存當前的SQLPLUS環(huán)境 已創(chuàng)建 file D:\setfile.sql 11.格式化查詢結(jié)果 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 //恢復(fù)列的格式 2)限制重復(fù)行 在限制重復(fù)行的同時,還可以在各個分組之間插入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行。