天天看點

Oracle 筆記(七)、PL/SQL 基礎

一、概述、PL/SQL 塊結構

PL/SQL 是Oracle産品對 SQL 語言的擴充。PL/SQL 塊共分為三個部分:聲明部分、可執行部分、異常部分。

DECLARE     ... BEGIN EXCEPTION END;

變量聲明内容:賦予變量适當的名稱、資料類型、定義變量(标準,記錄)、控制變量範圍。

變量命名規則:變量以字元開頭;可包含數字、下劃線、$、#;長度範圍 1~30;不區分大小寫;不能使用系統關鍵字。

ps.在 PL/SQL 常用的指令:

1、打開輸出開關            SET SERVEROUTPUT ON ;

2、利用系統包輸出資訊     DBMS_OUTPUT.PUT_LINE('x 的值是:' || x);

二、控制結構

1、分支語句

a、IF 分支

IF ... THEN  ELSEIF ...THEN ELSE END IF;

b、CASE 分支

CASE      WHEN ... THEN         ...     ELSE END CASE;

2、循環語句

a、基本循環(LOOP)

無條件循環,為避免進入無限循環,LOOP 循環的語句必須使用 EXIT 或 EXIT WHEN 語句。

LOOP END LOOP;

b、WHILE 循環

WHILE condition LOOP

c、FOR 循環

FOR counter IN [REVERSE] start..end 

3、順序控制

GOTO 語句:無條件的将控制權轉到标簽指定的語句。

NULL 語句:什麼也不做,隻是将控制權轉到下一條語句,用于語句結構需要,但什麼也不需要操作的情況下。

GOTO xxxx;       ... <<xxxx>> NULL;

三、異常

系統異常(預定義異常)

EXCEPTION      WHEN xxxx THEN         ....

自定義異常

    -- 自定義異常     xxxxx EXCEPTION;     -- 顯式引發異常     RAISE xxxxx     -- 異常處理     WHEN xxxxx THEN END;  

四、複合變量(記錄)

記錄是由幾個相關值構成的複合變量,常用于支援 SELECT 語句的傳回值。使用記錄可以将一行資料并到一個單元進行處理,而不必将每一列單獨處理。

    TYPE myrecord IS RECORD(id varchar2(10), name varchar2(10));     real_record myrecord;     -- SELECT .. INTO 指派語句     SELECT emp_id, emp_name INTO real_record FROM emp WHERE emp_id='001';     .....

或者 可以利用屬性類型來引用變量或者資料庫中某列的資料類型。

  ● 聲明變量 icode,引用表中某列 emp.id 的資料類型

    icode emp.id%TYPE;

  ● 聲明變量 emp_rec 引用表 emp 中所有列記錄類型

    emp_rec emp%ROWTYPE;

本文轉自 qvodnet 51CTO部落格,原文連結:http://blog.51cto.com/bks2015/1982990