<!-- @page { margin: 2cm } -->
在公司開發人員的源碼中,經常可以碰到如下的一些判斷條件式處理方法:
IF nvl(rtrim(v_Comp_no),' ') = ' ' AND nvl(rtrim(v_Comp_no1),' ') = ' ' THEN
SELECT 公司代號 INTO v_Comp_no FROM TABLE_NAME WHERE 廠別代號= v_Fact_no ;
ELSIF nvl(rtrim(v_Comp_no),' ') = ' ' AND nvl(rtrim(v_Comp_no1),' ') <> ' ' THEN
v_Comp_no:=v_Comp_no1;
END IF;
這里是判斷v_comp_no變量為空時,要麼取v_comp_no1中的值(有的話),要麼取一個基本表中的值.
這里有關於v_comp_no變量的值判斷了兩次,個人認為應該可以改為 :
IF nvl(rtrim(v_Comp_no),' ') = ' ' THEN
IF nvl(rtrim(v_Comp_no1),' ') = ' ' THEN
SELECT hcomp_no INTO v_Comp_no FROM x_factm WHERE fact_no= v_Fact_no ;
ELSE
v_Comp_no:=v_Comp_no1;
END IF;
END IF;
比較 BT 的作法 , 可以改為 :
IF nvl(rtrim(v_Comp_no),' ') = ' ' THEN
SELECT nvl(rtrim(v_Comp_no1),hcomp_no) INTO v_Comp_no FROM x_factm WHERE fact_no= v_Fact_no ;
END IF;
另外 , 在判斷一個變量是否為 NULL 時 ,
我不建議使用 nvl(rtrim(v_Comp_no),' ') = ' ' 這樣的方式 .
因為有可能這個變量的值就是一個 ' ' 符號 .
我覺得應該用 trim(v_comp_no) is null