🧾SQL Developer 教學:如何正確執行 Stored Procedure(完整圖解+常見錯誤排查)
🌟 前言:為什麼 Stored Procedure 執行了卻沒效果?
在企業系統開發中,你一定遇過這種情況:
- ✔ 程式碼已修改
- ✔ 按了執行
- ❌ 資料完全沒變
- ❌ 還是舊邏輯
很多人會懷疑:
👉「是不是資料庫壞掉了?」
其實 90% 的原因都是:
👉 執行方式錯誤 + 沒有 Compile
這篇會用「圖文+一步一步」帶你搞懂。
🧩 Stored Procedure 是什麼?(新手版)
你可以把它想成:
👉「資料庫裡的一個自動化腳本」
就像:
- Excel 巨集
- 自動咖啡機按鈕
- 一鍵報表生成
你呼叫它,它就會:
- 抓資料
- 做邏輯判斷
- 寫回資料庫
🖥 步驟一:修改 Stored Procedure 後一定要 Compile
當你修改程式碼後:
👉 一定要按 Compile(編譯)
✔ 成功訊息應該是:
Procedure compiled
❗ 如果沒 Compile 會發生什麼?
👉 資料庫仍然使用「舊版本」
這就是你看到:
- 改了欄位但沒變
- 改了邏輯但沒生效
的真正原因。
🖥 步驟二:正確執行 Stored Procedure
很多人會寫:
execute run_job('TEST_001');
❌ 這在 Oracle 很常「看起來成功但實際沒跑」
✅ 正確寫法(一定要用這個)
BEGIN
run_job('TEST_001');
END;
/
❗ 為什麼最後要加 /?
👉 這是在告訴 Oracle:
「現在這整段 PL/SQL 可以執行了」
沒有 / → 不會真的執行
🖥 步驟三:確認資料是否真的更新
執行後,請一定要查資料:
SELECT *
FROM result_table
WHERE batch_id = 'TEST_001';
👉 不要只看「執行成功」
🧪 進階:開啟 Debug(看程式到底有沒有跑)
你可以在程式中加入:
DBMS_OUTPUT.PUT_LINE('Processing...');
然後開啟:
👉 View → DBMS Output
🔍 常見錯誤總整理(超重要)
❌ 錯誤 1:用錯執行方式
execute procedure_name(...)
👉 可能沒跑
❌ 錯誤 2:沒有 Compile
👉 永遠跑舊程式
❌ 錯誤 3:資料條件沒符合
WHERE status = 'READY'
👉 沒資料 → 不會更新
❌ 錯誤 4:改錯欄位
👉 以為用新欄位
👉 實際還在用舊欄位
🧠 一句話記住核心觀念
👉 Stored Procedure 沒生效,不是資料庫壞掉,而是流程錯了
🎯 正確流程(工程師標準做法)
1️⃣ 修改程式
2️⃣ Compile
3️⃣ 用 BEGIN…END 執行
4️⃣ 查資料驗證
5️⃣ 必要時加 debug
留言
張貼留言