一、概述、PL/SQL 塊結(jié)構(gòu)
PL/SQL 是Oracle產(chǎn)品對 SQL 語言的擴(kuò)展。PL/SQL 塊共分為三個(gè)部分:聲明部分、可執(zhí)行部分、異常部分。
我們提供的服務(wù)有:成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、江西ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的江西網(wǎng)站制作公司
DECLARE
...
BEGIN
...
EXCEPTION
...
END;
變量聲明內(nèi)容:賦予變量適當(dāng)?shù)拿Q、數(shù)據(jù)類型、定義變量(標(biāo)準(zhǔn),記錄)、控制變量范圍。
變量命名規(guī)則:變量以字符開頭;可包含數(shù)字、下劃線、$、#;長度范圍 1~30;不區(qū)分大小寫;不能使用系統(tǒng)關(guān)鍵字。
ps.在 PL/SQL 常用的命令:
1、打開輸出開關(guān) SET SERVEROUTPUT ON ;
2、利用系統(tǒng)包輸出信息 DBMS_OUTPUT.PUT_LINE('x 的值是:' || x);
二、控制結(jié)構(gòu)
1、分支語句
a、IF 分支
IF ... THEN
...
ELSEIF ...THEN
...
ELSE
...
END IF;
b、CASE 分支
CASE
WHEN ... THEN
...
ELSE
...
END CASE;
2、循環(huán)語句
a、基本循環(huán)(LOOP)
無條件循環(huán),為避免進(jìn)入無限循環(huán),LOOP 循環(huán)的語句必須使用 EXIT 或 EXIT WHEN 語句。
LOOP
...
END LOOP;
b、WHILE 循環(huán)
WHILE condition LOOP
...
END LOOP;
c、FOR 循環(huán)
FOR counter IN [REVERSE] start..end
LOOP
...
END LOOP;
3、順序控制
GOTO 語句:無條件的將控制權(quán)轉(zhuǎn)到標(biāo)簽指定的語句。
NULL 語句:什么也不做,只是將控制權(quán)轉(zhuǎn)到下一條語句,用于語句結(jié)構(gòu)需要,但什么也不需要操作的情況下。
GOTO xxxx;
...
<>
NULL;
三、異常
系統(tǒng)異常(預(yù)定義異常)
EXCEPTION
WHEN xxxx THEN
....
自定義異常
DECLARE
-- 自定義異常
xxxxx EXCEPTION;
BEGIN
-- 顯式引發(fā)異常
RAISE xxxxx
EXCEPTION
-- 異常處理
WHEN xxxxx THEN
....
END;
四、復(fù)合變量(記錄)
記錄是由幾個(gè)相關(guān)值構(gòu)成的復(fù)合變量,常用于支持 SELECT 語句的返回值。使用記錄可以將一行數(shù)據(jù)并到一個(gè)單元進(jìn)行處理,而不必將每一列單獨(dú)處理。
DECLARE
TYPE myrecord IS RECORD(id varchar2(10), name varchar2(10));
real_record myrecord;
BEGIN
-- SELECT .. INTO 賦值語句
SELECT emp_id, emp_name INTO real_record FROM emp WHERE emp_id='001';
.....
END;
或者 可以利用屬性類型來引用變量或者數(shù)據(jù)庫中某列的數(shù)據(jù)類型。
● 聲明變量 icode,引用表中某列 emp.id 的數(shù)據(jù)類型
icode emp.id%TYPE;
● 聲明變量 emp_rec 引用表 emp 中所有列記錄類型
emp_rec emp%ROWTYPE;