Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

variable WHERE clause using CASE

lvs85003Feb 5 2020 — edited Feb 6 2020

I am trying to use a CASE statement in my WHERE clause:

SELECT T.TABLE_NAME,

       SUBSTR(O.OBJECT_TYPE,1,2) "TY",

       T.COLUMN_NAME,

       T.DATA_TYPE,

       T.DATA_LENGTH "DATA LNG",

       T.COLUMN_ID "COL ID"

  FROM ALL_TAB_COLUMNS "T",

       ALL_OBJECTS "O"

WHERE T.TABLE_NAME = O.OBJECT_NAME AND

       T.OWNER = UPPER('BT') AND

       T.COLUMN_NAME LIKE UPPER('%&&PRT%') AND

       (CASE

          WHEN &OTY = 'A' THEN

            O.OBJECT_TYPE IN ('TABLE', 'VIEW', 'PACKAGE', 'PACKAGE BODY','PROCEDURE','FUNCTION', 'SEQUENCE', 'TRIGGER')

          WHEN &OTY = 'T' THEN

            O.OBJECT_TYPE = 'TABLE'

       END) = 1

I get the following error:

             O.OBJECT_TYPE IN ('TABLE', 'VIEW', 'PACKAGE', 'PACKAGE BODY','PROCEDURE','FUNCTION', 'SEQUENCE', 'TRIGGER')

                           *

ERROR at line 14:

ORA-00905: missing keyword

----------------------

I can't figure out this error and any documentation or other examples have not helped.

Any suggestions would be greatly appreciated.

This post has been answered by Frank Kulash on Feb 5 2020
Jump to Answer
Comments
Post Details
Added on Feb 5 2020
5 comments
1,043 views