SQL Plus 有本身的命令和環境,它提供對Oracle數據庫的訪問。它使您可以輸入和執行SQL、sql、sql、SQL +和操做系統命令來執行如下操做:sql
格式化,執行查詢結果的存儲、打印和打印計算數據庫
檢查表和對象定義session
開發和運行批處理腳本ide
執行數據庫管理測試
您可使用sql Plus 以交互方式生成報告,以生成批處理過程報告,並將結果輸出到文本文件、屏幕或HTML文件,以便在Internet上瀏覽。您可使用sql +輸出的HTML輸出設備動態生成報表。
1.1SQLPlus Basics
cl buff 執行後
SQL> /
SP2-0103: Nothing in SQL buffer to run.
SQL> a where TNAME='CDB_APPLY'
2* where TNAME='CDB_APPLY'
SQL> /ui
TABTYPE CLUSTERID操作系統
CDB_APPLY
VIEW
SQL> select * from tab
2 where tname<>''
3 ;3d
no rows selectedcode
SQL> list 2
2 where tname<>''
SQL> del 2
SQL> list
1 select from tab
2
SQL> select from scott.EMP
2 where EMPNO=7934
3 ;對象
EMPNO ENAME JOB MGR HIREDATE SAL
COMM DEPTNO
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
SQL> list 2
2 where EMPNO=7934
SQL> change /7934/7902
2 where EMPNO=7902
SQL> run
1 select from scott.EMP
2 where EMPNO=7902
3
EMPNO ENAME JOB MGR HIREDATE SAL
COMM DEPTNO
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
REMARK, / /,--註釋說明
SQL> REMARK 測試
SQL> select from scott.EMP
2 remark 測試
3 where empno=7934;
remark 測試
ERROR at line 2:
ORA-00911: invalid character
SQL> / 測試
SQL> /
SQL> select from scott.EMP
2 /測試
3 */
4 where empno=7934;
EMPNO ENAME JOB MGR HIREDATE SAL
COMM DEPTNO
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
SQL> select * from scott.EMP
2 --測試
3 where empno=7934;
EMPNO ENAME JOB MGR HIREDATE SAL
COMM DEPTNO
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 SQL> SELECT &SORTCOL, job
2 FROM &MYTABLE
3 ;
Enter value for sortcol: ename
old 1: SELECT &SORTCOL, job
new 1: SELECT ename, job
Enter value for mytable: scott.emp
old 2: FROM &MYTABLE
new 2: FROM scott.emp
ENAME JOB
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
JONES MANAGER
MARTIN SALESMAN
BLAKE MANAGER
CLARK MANAGER
KING PRESIDENT
TURNER SALESMAN
JAMES CLERK
FORD ANALYST
ENAME JOB
MILLER CLERK
12 rows selected.
SQL> define
DEFINE _DATE = "2017-12-16 14:29:31" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "CLONEPDB_PLUG" (CHAR)
DEFINE _USER = "SYS" (CHAR)
DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1102000100" (CHAR)
DEFINE _EDITOR = "Notepad" (CHAR)
DEFINE _O_VERSION = "Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production" (CHAR)
DEFINE _O_RELEASE = "1202000100" (CHAR)
SQL> DEFINE A = 7934
SQL> select ENAME,JOB
2 from scott.emp where empno=&A;
old 2: from scott.emp where empno=&A
new 2: from scott.emp where empno=7934
ENAME JOB
MILLER CLERK
SQL> unDEFINE A
SQL> variable a number;
SQL> print a;
A
SQL> exec :a:=7934
PL/SQL procedure successfully completed.
SQL> select ENAME,JOB
2 from scott.emp where empno=:a;
ENAME JOB
MILLER CLERK
SET ECHO ON/OFF 控制是否在調用執行Script的時候顯示其內容
SET VERIFY ON/OFF 決定是否在執行帶有參數變量的Sql命令操做時,顯示賦值代入的過程
按回車繼續
PROMPT Before continuing, make sure you have your account card.
PAUSE Press RETURN to continue.
清屏
CLEAR SCREEN
SQL> CLEAR column
columns cleared
SQL> CLEAR column
columns cleared
SQL> VARIABLE ret_val NUMBER
SQL> BEGIN
2 :ret_val:=4;
3 END;
4 /
PL/SQL procedure successfully completed.
SQL> PRINT RET_VAL
4
SQL> variable abc number
SQL> exec :abc :=123;
PL/SQL procedure successfully completed.
SQL> select :abc from dual;
:ABC
123
SQL> create table mytab (col1 number, col2 varchar2(10));
Table created.
SQL> var xyz varchar2(10)
SQL> begin
2 :xyz :='test'
3 ;
4 end;
5 /
PL/SQL procedure successfully completed.
SQL> insert into mytab values(:abc,:xyz);
1 row created.
SQL> select * from mytab;
COL1 COL2
123 test
SQL> drop table mytab purge;
Table dropped.
SQL> alter session set container=pdbtest;
Session altered.
SQL> CREATE OR REPLACE PACKAGE EmpPack
2 AS
3 type EmpInfoTyp is ref cursor;
4 PROCEDURE EmpInfoRpt (emp_cv OUT EmpInfoTyp);
5 end EmpPack;
6 /
Package created.
SQL> CREATE OR REPLACE PACKAGE BODY EmpPack AS
2 PROCEDURE EmpInfoRpt (emp_cv OUT EmpInfoTyp) AS
3 BEGIN
4 OPEN emp_cv FOR SELECT EMPLOYEE_ID, SALARY
5 FROM HR.EMP_DETAILS_VIEW
6 WHERE JOB_ID='SA_MAN' ;
7 END;
SQL> VARIABLE cv REFCURSOR
SQL> EXECUTE EmpPack.EmpInfoRpt(:cv)
PL/SQL procedure successfully completed.
SQL> PRINT cv
EMPLOYEE_ID SALARY
145 14000 146 13500 147 12000 148 11000 149 10500
8 END;
9 /
Package body created.
SQL> VARIABLE cv REFCURSOR
SQL> EXECUTE EmpPack.EmpInfoRpt(:cv)
PL/SQL procedure successfully completed.
SQL> PRINT cv
EMPLOYEE_ID SALARY
145 14000 146 13500 147 12000 148 11000 149 10500