pl/sql塊由三個部分組成:說明部分、執行部分和異常處理部分。
一段完整的pl/sql程式塊結構如下所示:
declare
說明部分;
begin
/* 塊開始標記 */
執行部分;
exception
異常處理部分;
end;
/* 塊結束標記 */
說明:使用者在編寫pl/sql程式塊時,應注意以下幾點:(1)說明部分:說明部分是可選的。由關鍵字declare引出,用於定義常量、變數、游標、異常、複雜資料型別。在編寫程式時,程式塊中引用的資料物件和程式單元應遵循先定義後使用的原則。
(2)執行部分:執行部分是必需的。由關鍵字begin開始,至end結束。pl/sql程式塊至少包含一條可執行語句,也可以巢狀其他pl/sql程式塊。
(3)異常處理部分:異常處理部分是可選的。由關鍵字exception開始。當執行部分發生錯誤時,將會引起異常。這時,正常的執行將被停止且轉移到異常程式處理。異常處理完成後,將結束對應pl/sql塊的執行。
(1)pl/sql的每一條語句都必須以分號」;「結束。關鍵字declare、begin、exception後無分號,但end後一定要有分號,表示乙個pl/sql程式塊的結束。
(2)注釋用多行注釋(/注釋文字/)或單行注釋(–注釋文字)來表示。
(3)在執行部分可以使用的控制結構包括順序結構、分支結構、迴圈結構等。在執行部分可使用sql語句的乙個子集,可使用select語句、dml語句、游標操作語句,但不能使用ddl語句和dcl語句。ddl語句和dcl語句需要在相關包的支援下才能在pl/sql中使用。在執行部分中,空語句(null)是合法的。
(4)當乙個pl/sql程式的說明部分和異常處理部分都沒有時,不可將begin和end兩個關鍵字省略掉。
【例1】乙個pl/sql程式的說明部分和異常處理部分都沒有。
set serveroutput on
begin
dbms_output.put_line(
'hello oracle!');
end;
在本例中需注意以下三點: (1)set serveroutput on【例2】乙個只包含空語句的pl/sql程式塊。語句用於設定環境變數serveroutput的值,當其值為on時,表示允許伺服器輸出pl/sql程式的執行結果。該語句在當前會話結束前一直有效,因此不用重複書寫。也就是說,在使用者沒有關閉sql
plus或者斷開sql developer連線之前,該語句都不需要重複執行。 (2)dbms_output.put_line(···);
語句中呼叫了dbms_output包的put_line子程式,用於輸出給定的字串後換行。dbms_output包一般用於除錯目的,輸出必要的除錯資訊。
(3)當乙個pl/sql程式只有執行部分時,也不可將begin和end兩個關鍵字省略掉。
begin
null
;end
;
該程式塊是合法的,只是執行後並沒有做任何操作。【例3】乙個定義變數並輸出的pl/sql程式塊。
set serveroutput on
declare
temp varchar2(20)
;begin
temp:=
'abcde'
; dbms_output.put_line(
temp);
end;
【例4】乙個包含說明部分、執行部分和異常部分的pl/sql程式塊。
set serveroutput on
declare
i number(10)
;begin
i:=5/
0;exception
when zero_divide then
dbms_output.put_line(
'除數不能為0');
end;
上述語句在執行部分會出錯,因此轉入異常進行處理,輸出錯誤資訊,從而避免了程式執行錯誤。zero_divide是oracle資料庫預定義的異常,資料庫系統可以自動識別後轉入異常處理部分。【例5】巢狀的pl/sql程式塊。
set serveroutput on
declare
a nvarchar2(
10):=
'aaa'
;begin
declare
b nvarchar2(
10):=
'bbb'
;begin
dbms_output.put_line(b)
;end
; dbms_output.put_line(a)
;end
;
oracle學習之PLSQL 1 基礎
一 plsql的基本結構 header is declaration section begin execution section exception exception section end 二 如何執行pl sql 1.建立塊結構,在 end 後加 2.在sql plus下執行時,需要先進行...
oracle基礎 pl sql的游標
result set 結果集 在pl sql中使用游標代表乙個 集合 定義 cursor 游標名 引數名 資料型別 eg cursor c1 is select name from test 定義了乙個游標c1,該內容是所有名稱name的集合 found 是游標取到值為真 notfound 是游標沒...
PL SQL之基礎語法
declare 說明部分 變數說明 游標申明 例外說明 begin 語句序列 dml語句 exception 例外處理語句 end 1 定義基本變數 2 型別 char,varchar2,date,number,boolean,long 3 舉例 var1 char 15 married boole...