Hola,
El error se da porque DECODE espera como parametro de entrada un tipo de dato caracter, como por ejemplo varchar2 o char. Una opcion es utilizar las funciones NVL o NVL2 pero si el valor del campo LOB supera los 4k se generara una excepcion.
La forma correcta de operar con LOBs es utilizando el package DBMS_LOB, para este caso, la funcion GETLENGTH
Código:
SQL> desc t1;
Name Null? Type
----------------------------------------- -------- ---------------
ID NUMBER
DATA CLOB
SQL> select * from t1;
ID DATA
---------- --------------------
1 data 1
1
SQL> select id, dbms_lob.GETLENGTH(data) from t1;
ID DBMS_LOB.GETLENGTH(DATA)
---------- ------------------------
1 6
1
SQL> select id,data, nvl2(dbms_lob.GETLENGTH(data),'Si hay','No Hay') from t1;
ID DATA NVL2(D
---------- -------------------- ------
1 data 1 Si hay
1 No Hay
Por otro lado
NOT NULL no es una opcion valida en el DECODE.
Saludos