PLSQL的IF文的问题,用IF文怎么写

PL/SQL的问题
参数是这样的。

CREATE OR REPLACE PROCEDURE  vs_five50(
    in_PLACE                 IN    NUMBER,        --处理对象
    in_DATE                 IN    VARCHAR2,      --年月 YYYYMM形式
    inGOODS_CD         IN    VARCHAR2,      --商品code
    inCUST_CD             IN    VARCHAR2       --顾客code
    )

        --我想用IF文,让发生分歧

        --如果处理对象or年月是null的话
        IF inPLACE IS NULL OR in_DATE IS NULL THEN

    --如果处理对象是1,2,3 以外的话
    ELSIF inPLACE NOT IN(1,2,3)  THEN

    --年月不是YYYYYMM型式,or最后两个数字不是”04””10”以外

ELSIF   --这里怎么写才好?

    END IF;
    END;/
如果会有PLSQL的人,能不能告诉我?

再写一个函数来判断年月格式,直接用to_date(date,‘yyyyMM’)方法,能正常转返回一个值,异常捕获返回另一个值

使用正则表达式判断:

 IF NOT regexp_like(in_DATE,                             
    '^((((19|2\d)\d{2})(0?[13578]|1[02])(0?[1-9]|[12]\d|3[01]))|(((19|2\d)\d{2})(0?[469]|11)(0?[1-9]|[12]\d|30))|(((19|2\d)\d{2})0?2(0?[1-9]|1\d|2[0-8]))|((19([02468][048]|13579)[26]|2\d(0[48]|[13579][26]|[2468][048])|(2000))0?2(0?[1-9]|[12]\d)))$') THEN

https://www.cnblogs.com/jinit/p/12454860.html

看你要做什么
一种是基于容错的考虑,当日期不完整的时候,比如缺少年,有月、日,那么给一个默认的年,凑齐一个日期
一种是严格的考虑,如果不合法,就直接把字段设置为null