PL/SQL & SQL CODING GUIDELINE 13 - Avoid initializing variables using functions in the declaration section

條款十三是說要避免在變數宣告的同時呼叫 function 去初始變數。

1
2
3
4
5
DECLARE 
l_company_name VARCHAR2(30) := util_pck.get_company_name(in_id => 47);
BEGIN

END;


因為在變數宣告的地方呼叫 function 去初始變數,function 發生例外時是無法攔截處理的。


因此要像下面這樣將宣告與初始拆開處理。

1
2
3
4
5
6
7
8
9
10
11
DECLARE 
v_str VARCHAR2(30);
BEGIN
<<init>>
BEGIN
v_str := util_pck.get_company_name(inId => 47);
EXCEPTION
WHEN VALUE_ERROR THEN
...
END init;
END;