Ответ 1
Если вы пытаетесь выполнить сравнение в PL/SQL, вы можете просто проверить равенство, поскольку решение Igor
SQL> ed
Wrote file afiedt.buf
1 DECLARE
2 dummy clob;
3 BEGIN
4 dummy := empty_clob();
5 IF dummy = empty_clob() THEN
6 dbms_output.put_line( 'Dummy is empty' );
7 ELSE
8 dbms_output.put_line( 'Dummy is not empty' );
9 END IF;
10* END;
SQL> /
Dummy is empty
PL/SQL procedure successfully completed.
Если вы пытаетесь сделать это в SQL, yougyh, вам нужно использовать функцию DBMS_LOB.COMPARE. Столбец LOB в таблице на самом деле является локатором LOB (т.е. указателем), поэтому вам действительно нужно, чтобы значение, на которое указывает LOB, сравнимо с значением, на которое указывает локатор LOB, возвращаемый функцией EMPTY_CLOB().
SQL> desc bar
Name Null? Type
----------------------------------------- -------- ------------------------
FOO CLOB
SQL> insert into bar values ('123');
1 row created.
SQL> insert into bar values( empty_clob() );
1 row created.
SQL> insert into bar values( empty_clob() );
1 row created.
SQL> ed
Wrote file afiedt.buf
1 select count(*)
2 from bar
3* where dbms_lob.compare( foo, empty_clob() ) = 0
SQL> /
COUNT(*)
----------
2
SQL> ed
Wrote file afiedt.buf
1 select count(*)
2 from bar
3* where dbms_lob.compare( foo, empty_clob() ) != 0
SQL> /
COUNT(*)
----------
1