简体   繁体   English

PL SQL IF-THEN-ELSE块

[英]PL SQL IF-THEN-ELSE block

I have this piece of code that is embedded in my sql. 我有这段代码嵌入在我的sql中。 For some reason, I see that every time my last ELSE block is getting executed. 由于某种原因,我看到每次我的最后一个ELSE块都被执行时。 Here is my code: 这是我的代码:

 IF REGEXP_LIKE (UPPER(V_TEMP_DEPT_1),
        'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
          UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
              V_DEPT_N    := V_TEMP_DEPT_1;
              V_ADDR_LINE1:= NULL;
      ELSE

      IF REGEXP_LIKE (UPPER(V_TEMP_DEPT_2),
      'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
        UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
            V_DEPT_N    := V_TEMP_DEPT_2;
            V_ADDR_LINE2:= NULL;
                    ELSE

      IF REGEXP_LIKE (UPPER(V_TEMP_DEPT_3),
          'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
            UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
              V_DEPT_N    := V_TEMP_DEPT_3;
              V_ADDR_LINE3:= NULL;
      ELSE

      IF REGEXP_LIKE (UPPER(V_TEMP_DEPT_4),
          'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
            UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
              V_DEPT_N    := V_TEMP_DEPT_4;
              V_ADDR_LINE4:= NULL;
      ELSE
              -- The below line always gets executed.
              V_DEPT_N:= NULL;

      END IF;
        END IF;
          END IF;
            END IF;

Any ideas what am I doing wrong? 有什么想法我做错了吗?

IF REGEXP_LIKE (UPPER(V_TEMP_DEPT_1),
    'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
      UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
          V_DEPT_N    := V_TEMP_DEPT_1;
          V_ADDR_LINE1:= NULL;

  ELSIF REGEXP_LIKE (UPPER(V_TEMP_DEPT_2),
  'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
    UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
        V_DEPT_N    := V_TEMP_DEPT_2;
        V_ADDR_LINE2:= NULL;

  ELSIF REGEXP_LIKE (UPPER(V_TEMP_DEPT_3),
      'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
        UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
          V_DEPT_N    := V_TEMP_DEPT_3;
          V_ADDR_LINE3:= NULL;

  ELSIF REGEXP_LIKE (UPPER(V_TEMP_DEPT_4),
      'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
        UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
          V_DEPT_N    := V_TEMP_DEPT_4;
          V_ADDR_LINE4:= NULL;
  ELSE
          -- Now this works!!
          V_DEPT_N:= NULL;

  END IF;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM