ORACLE---IF 分支 中的NULL判断和自己做的过程中暴露的错误

来源:互联网 发布:java菜单权限 编辑:程序博客网 时间:2024/06/10 01:14
 

---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是最正确的。