1. 程式人生 > >ORACLE---IF 分支 中的NULL判斷和自己做的過程中暴露的錯誤

ORACLE---IF 分支 中的NULL判斷和自己做的過程中暴露的錯誤

 

---P1
DECLARE
   V_NUMBER1 NUMBER;
   V_NUMBER2 NUMBER;
   V_Result  VARCHAR2(7);
BEGIN
   IF V_NUMBER1 < V_NUMBER2 THEN
      V_Result := 'YES';
   ELSE
      V_Result := 'NO';
   END IF;
END;

----------------------------------
--P2
DECLARE
  V_NUMBER1 NUMBER;
  V_NUMBER2 NUMBER;
  V_Result VARCHAR2(7);
BEGIN
  IF V_NUMBER1 > V_NUMBER2 THEN
     V_Result := 'NO';
  ELSE
     V_Result := 'YES';
  END IF;
END;

-----------------------------------115
---P3
DECLARE
   V_NUMBER1 NUMBER;
   V_NUMBER2 NUMBER;
   V_Result  VARCHAR2(7);
BEGIN
  IF (V_NUMBER1 IS NULL OR V_NUMBER2 IS NULL) THEN
     V_Result :='UNKONWN';
  ELSIF V_NUMBER1 > V_NUMBER2 THEN
     V_Result := 'NO';
  ELSE
     V_Result := 'YES';
  END IF;
END;

--1。不是用的=號 而是用的:=號
--2。每一個完整的句子後都要加上個;號。尤其是最後一個END後要加上;號,不然編譯過不去。
--3。對於IF ELSE 形式要改變對sql Server的思想,這裡的形勢是IF ..; ELSE ..; END IF;
--4. 再則就是要對輸入的值進行NULL判斷,因為NULL的話也是返回的False.
--5。判斷形勢還有多分支 形勢為IF THEN...;ELSIF  THEN ..;ELSE ...; END IF; 是ELSIF 不是ELSEIF啊
--5. p3是最正確的。