🧾SQL Developer 教學:如何正確執行 Stored Procedure(完整圖解+常見錯誤排查)

🌟 前言:為什麼 Stored Procedure 執行了卻沒效果?

在企業系統開發中,你一定遇過這種情況:

  • ✔ 程式碼已修改
  • ✔ 按了執行
  • ❌ 資料完全沒變
  • ❌ 還是舊邏輯

很多人會懷疑:

👉「是不是資料庫壞掉了?」

其實 90% 的原因都是:

👉 執行方式錯誤 + 沒有 Compile

這篇會用「圖文+一步一步」帶你搞懂。


🧩 Stored Procedure 是什麼?(新手版)

你可以把它想成:

👉「資料庫裡的一個自動化腳本」

就像:

  • Excel 巨集
  • 自動咖啡機按鈕
  • 一鍵報表生成

你呼叫它,它就會:

  1. 抓資料
  2. 做邏輯判斷
  3. 寫回資料庫

🖥 步驟一:修改 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

    留言

    這個網誌中的熱門文章

    🔍Vue.js 專案錯誤排查:解決 numericFields is not defined 與合併儲存格邏輯最佳化

    🖥️遠端桌面連線完整新手指南:Windows RDP、Chrome Remote Desktop、AnyDesk、TeamViewer 一次搞懂

    🔎EF Core 連 Oracle 出現 ORA-00600 [kpp_concatq:2] 的完整排錯指南(含 EF Core ToString/CultureInfo 錯誤)