標籤:
Oracle中PL/SQL簡介、基本文法以及資料類型
一.PL/SQL簡介。
Oracle PL/SQL語言(Procedural Language/SQL)是結合了結構化查詢和Oracle自身過程式控制製為一體的強大語言,PL/SQL不但支援更多的資料類型,擁有自身的變數申明,指派陳述式,而且還有條件,迴圈等流程式控制制語句。過程式控制制結構與SQL資料處理能力無縫的結合形成了強大的程式設計語言,可以建立過程和函數以及程式包。
PL/SQL是一種塊結構的語言,它將一組語句放在一個塊中,一次性的發送給伺服器,由伺服器和自身引擎兩個執行器執行代碼。如:
優點:
SQL是訪問資料庫的標準語言,通過SQL命令,使用者可以操縱資料庫的資料。PL/SQL支援所有的SQL資料操縱命令、遊標控制命令、事務控制命令、SQL函數、運算子和偽列。
同時PL/SQL和SQL語言緊密整合,PL/SQL支援所有的SQL資料類型和NULL值。
PL/SQL支援物件導向的編程,在PL/SQL中可以建立類型,可以對類型進行繼承,可以在子程式中重載方法等。
SQL是非過程語言,只能一條一條的執行,而PL/SQL把一個PL/SQL統一進行編譯後執行,同時還可以把編譯好的PL/SQLBlock Storage起來,以備重用,減少了應用程式和伺服器之間的通 信時間,所以PL/SQL是高效而快速的。
使用PL/SQL編寫的應用程式語言,可以移植到任何操作平台的ORACLE伺服器,同時還可以編寫可移植程式庫,在不同環境中使用。
可以通過預存程序對客戶機和伺服器之間的應用程式邏輯進行分割,這樣可以限制對ORACLE資料庫的訪問,資料庫還可以授權和撤銷其他使用者的訪問權利。
二.PL/SQL基本文法。
PL/SQL是一種塊結構的語言。一個PL/SQL包含了一個或多個邏輯快,邏輯塊中可以聲明變數、寫程式主體、還可以捕獲異常和異常處理。每個邏輯快分為三個部分,文法結構如下:
PL/SQL的文法結構
[DECLARE
--declaration statements] 變數或常量聲明部分。可選。
BEGIN
--executable statements 執行部分。BEGIN開始,END結束(加;號)。必須寫。
[EXCEPTION
--exception statements] 異常處理部分。可選。作用於java中異常的作用和機制都一樣。
END;
注意:
- LP/SQL是一種程式設計語言,有自己專屬的資料類型,變數聲明和賦值以及流程式控制制語句。
- 對大小寫不敏感,但是為了規範:關鍵字全部大寫,其餘部分小寫。
- 每一條語句以分號結束。
PL/SQL特殊符號說明:
三.變數和常量。
聲明變數:
變數名 資料類型[:=初始值];
DECLAREa int;BEGIN select MGR into a from emp where empno=7369;END;
變數名 資料類型 DEFAULT 初始值;
DECLAREb int default 0;BEGIN select MGR into b from emp where empno=7369;END;
聲明普通常量:
常量名 CONSTANT 資料類型 :=常量值;
set serveroutput on; --設定向控制台輸出DECLAREc CONSTANT int:=666;BEGIN dbms_output.put_line(c);END;
四.PL/SQL資料類型。
前面在建表時,學習過Oracle SQL的資料類型,PL/SQL不但支援這些資料類型,還具備自身的資料類型。如:
當聲明一個變數的值是資料庫的一行或者是資料庫的某列時,可以直接使用屬性類型來聲明。ORACLE有兩種屬性資料類型:%TYPE和%ROWTYPE
%ROWTYPE
引用資料庫表中的一行作為資料類型,可以使用" . " 來訪問記錄中的屬性。
執行個體:
set serveroutput on; 結果:
DECLARE EMPNO ENAME SAL myrow EMP%ROWTYPE; 7369 SMITH 800BEGIN select * into myrow from emp where empno=7369; dbms_output.put_line(‘EMPNO ENAME SAL‘); dbms_output.put_line(myrow.empno||‘ ‘||myrow.ename||‘ ‘||myrow.sal); END;
%TYPE
引用某個變數或者資料庫的列的類型作為某變數的資料類型。
執行個體:
set serveroutput on;DECLARE 說明: sal emp.sal%TYPE; mytype NUMBER(4):=1000; 定義sal的資料類型為emp表中sal的資料類型。 sumsal mytype%TYPE;BEGIN select SAL into sal from emp where empno=7499; 定義sumsal的資料類型為mytype的資料類型。 sumsal:=sal+mytype; dbms_output.put_line(sumsal);END;
Oracle中PL/SQL簡介、基本文法以及資料類型