SQL 為非程序化 4GL,便利但難處理複雜業務流程。PL/SQL 為程序化 3GL,關注處理細節,可實作複雜邏輯,彌補 SQL 不足。
以區塊為基本單位,三段式:
DECLARE
V_ID INTEGER;
V_NAME VARCHAR2(20);
CURSOR C_EMP IS SELECT * FROM EMPLOYEE WHERE EMP_ID=3;
BEGIN
OPEN C_EMP;
LOOP
FETCH C_EMP INTO V_ID, V_NAME;
EXIT WHEN C_EMP%NOTFOUND;
END LOOP;
CLOSE C_EMP;
DBMS_OUTPUT.PUT_LINE(V_NAME);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('NO DATA');
END;
型別對應 Oracle 欄位型別:數值、布林、字元、日期。
-- NUMBER:整數/浮點數
-- VARCHAR2:變長字串