CASE can work as a PL/SQL construct but DECODE is used only in SQL statements.CASE can be used as a parameter of a function/procedure. CASE expects datatype consistency, DECODE does not CASE expects datatype consistency, DECODE does not DECODE can work with only scalar values but CASE can work with logical operators, predicates, and searchable subqueries.