1. 基本架構
CREATE OR REPLACE PROCEDURE proc_name (
p_param1 IN NUMBER,
p_param2 IN NUMBER
) IS
v_var1 INTEGER := 0;
v_var2 DATE;
BEGIN
-- 業務邏輯
END proc_name;
2. SELECT INTO 單行查詢
BEGIN
SELECT col1, col2 INTO v_var1, v_var2 FROM typestruct WHERE ...;
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- 處理無資料情況
NULL;
END;
3. 條件判斷 IF
IF v_test = 1 THEN
-- do something
END IF;
4. 迴圈 WHILE
WHILE v_test = 1 LOOP
-- 迴圈體
END LOOP;
5. 變數賦值
v_test := 123;
6. 隱式游標 FOR 迴圈
DECLARE
CURSOR c_cur IS SELECT * FROM xxx;
BEGIN
FOR r_rec IN c_cur LOOP
v_sum := r_rec.col1 + r_rec.col2;
END LOOP;
END;
7. 顯式帶參數游標
CURSOR c_user(p_cid NUMBER) IS SELECT name FROM user WHERE typeid = p_cid;
OPEN c_user(v_cid);
LOOP
FETCH c_user INTO v_name;
EXIT WHEN c_user%NOTFOUND;
-- 處理
END LOOP;
CLOSE c_user;
8. PL/SQL Developer 除錯技巧
- 連線資料庫 → 新增 Test Window。
- 輸入呼叫存儲過程代碼,F9 開始除錯,Ctrl+N 單步執行。