PL/SQL(二)PL/SQL塊


PL/SQL是一種塊結構的語言,一個PL/SQL程序包含了一個或者多個邏輯塊,邏輯塊中可以聲明變量,變量在使用之前必須先聲明。除了正常的執行程序外,PL/SQL還提供了專門的異常處理部分進行異常處理。每個邏輯塊分為三個部分,語法是:

語法結構:PL/SQL塊的語法

[DECLARE 
  --declaration statements]BEGIN 
  --executable statements ② 
[EXCEPTION 
  --exception statements]END;

語法解析:

① 聲明部分:聲明部分包含了變量和常量的定義。這個部分由關鍵字DECLARE開始,如果不聲明變量或者常量,可以省略這部分。
② 執行部分:執行部分是 PL/SQL塊的指令部分,由關鍵字BEGIN開始,關鍵字END結尾。所有的可執行PL/SQL語句都放在這一部分,該部分執行命令並操作變量。其他的PL/SQL塊可以作為子塊嵌套在該部分。PL/SQL塊的執行部分是必選的。注意END關鍵字后面用分號結尾。

③ 異常處理部分:該部分是可選的,該部分用EXCEPTION關鍵字把可執行部分分成兩個小部分,之前的程序是正常運行的程序,一旦出現異常就跳轉到異常部分執行。

 

PL/SQL是一種編程語言,與Java和C#一樣,除了有自身獨有的數據類型、變量聲明和賦值以及流程控制語句外,PL/SQL還有自身的語言特性:

★PL/SQL對大小寫不敏感,為了良好的程序風格,開發團隊都會選擇一個合適的編碼標准。比如有的團隊規定:關鍵字全部大些,其余的部分小寫。

★PL/SQL塊中的每一條語句都必須以分號結束,SQL語句可以是多行的,但分號表示該語句結束。一行中可以有多條SQL語句,他們之間以分號分隔,但是不推薦一行中寫多條語句。

PL/SQL中的特殊符號說明:

類型 符號 說明
賦值運算符  := Java和C#中都是等號,PL/SQL的賦值是:=
特殊字符  || 字符串連接操作符。
 -- PL/SQL中的單行注釋。
 /*,*/ PL/SQL中的多行注釋,多行注釋不能嵌套。
 <<,>> 標簽分隔符。只為了標識程序特殊位置。
 .. 范圍操作符,比如:1..5 標識從1到5
算術運算符  +,-,*,/ 基本算術運算符。
 ** 求冪操作,比如:3**2=9
關系運算符  >,<,>=,<=,= 基本關系運算符,=表示相等關系,不是賦值。
 <>,!= 不等關系。
邏輯運算符  AND,OR,NOT 邏輯運算符。

 

※變量聲明

PL/SQL支持SQL中的數據類型,PL/SQL中正常支持NUMBER,VARCHAR2,DATE等Oracle SQL數據類型。聲明變量必須指明變量的數據類型,也可以聲明變量時對變量初始化,變量聲明必須在聲明部分。聲明變量的語法是:

語法格式:聲明變量


 

 變量名 數據類型[ :=初始值]


 

 語法解析:

 數據類型如果需要長度,可以用括號指明長度,比如:varchar2(20)。

代碼演示:聲明變量

SQL> DECLARE 
2 sname VARCHAR2(20) :='jerry'; ① 
3 BEGIN 
4 sname:=sname||' and tom'; ② 
5 dbms_output.put_line(sname); ③ 
6 END; 

 

代碼解析:

① 聲明一個變量sname,初始化值是“jerry”。字符串用單引號,如果字符串中出現單引號可以使用兩個單引號(’’)來表示,即單引號同時也具有轉義的作用。
② 對變量sname重新賦值,賦值運算符是“:=”。
③ dbms_output.put_line是輸出語句,可以把一個變量的值輸出,在SQL*Plus中輸出數據時,可能沒有結果顯示,可以使用命令:set serveroutput on設置輸出到SQL*Plus控制台上。

 

對變量賦值還可以使用SELECT…INTO 語句從數據庫中查詢數據對變量進行賦值。但是查詢的結果只能是一行記錄,不能是零行或者多行記錄。

代碼演示:變量賦值

SQL> DECLARE 
2 sname VARCHAR2(20) DEFAULT 'jerry'; ① 
3 BEGIN
4 SELECT ename INTO sname FROM emp WHERE empno=7934; ②
5 dbms_output.put_line(sname); 
6 END;

 代碼解析:

① 變量初始化時,可以使用DEFAULT關鍵字對變量進行初始化。

② 使用select…into語句對變量sname賦值,要求查詢的結果必須是一行,不能是多行或者沒有記錄。

※聲明常量

常量在聲明時賦予初值,並且在運行時不允許重新賦值。使用CONSTANT關鍵字聲明常量。

代碼演示:聲明常量

SQL> DECLARE 
2 pi CONSTANT number :=3.14; --圓周率長值 ① 
3 r number DEFAULT 3; --圓的半徑默認值3 ② 
4 area number; --面積。 
5 BEGIN 
6 area:=pi*r*r; --計算面積 
7 dbms_output.put_line(area); --輸出圓的面積 
8 END;

 

代碼解析:

① 聲明常量時使用關鍵字CONSTANT,常量初值可以使用賦值運算符(:=)賦值,也可以使用DEFAULT關鍵字賦值。

 

在SQL*Plus中還可以聲明Session(會話,也就是一個客戶端從連接到退出的過程稱為當前用戶的會話。)全局級變量,該變量在整個會話過程中均起作用,類似的這種變量稱為宿主變量。宿主變量在PL/SQL引用時要用“:變量名”引用。

代碼演示:宿主常量

SQL> var emp_name varchar(30); ① 
SQL> BEGIN 
2 SELECT ename INTO :emp_name FROM emp WHERE empno=7499; ②
3 END;

 

代碼解析:
① 可以使用var聲明宿主變量。
② PL/SQL中訪問宿主變量時要在變量前加“:”。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM