2012-07-02 74 views
0

在Oracle PL/SQL中,如何調試複雜的存儲過程?Oracle PL/SQL如何調試一個複雜的存儲過程?

例如下面的代碼,它使用循環+相關子查詢。如何充分理解它?我瞭解到,調試的最佳方式是分而治之,那麼如何將這種編碼切成小塊?

感謝

v_count := 1; 

while v_count > 0 
LOOP 

update tbl_A a 
set a.name = (select b.name from tbl_B b where a.id = b.id) 
where a.id = (
    select c.id from tbl_C c where c.id = a.id 
) 

v_count := sql%rowcount; 
END LOOP 
+3

這可能會更新1而不會影響行或進入無限循環。如果這只是一般的虛擬代碼,那麼一般的建議是不要將SQL語句放入過程循環中。 SQL是基於集合的語言,可以在單個語句中做任何你想做的事情。 –

回答

0

嘗試註釋掉的代碼部分,然後將如此遠的結果存儲在一個變量。 然後你可以選擇它:SELECT @varname至少這是MYSQL 5.x如何處理它。

1

你不會說你正在使用什麼工具,但是如果你得到Oracle SQL Developer,它包含一個調試器,它允許你逐行執行代碼,設置斷點等等 - 所有典型的調試GUI的功能。

而且,它是免費的。 Get it here

相關問題