Why doesn't this trigger kick out the user B after log on:

create or replace trigger logon_from_linux
after logon on B.schema
declare
W_NAME varchar2(20);
W_IP varchar2(20);
begin
select USERNAME into W_NAME from USER_USERS;
select Sys_Context('USERENV','IP_ADDRESS') into W_IP from dual;
insert into table values(W_NAME,W_IP);
if W_NAME = 'B' and W_IP = 'XX.XX.XX' then
EXECUTE IMMEDIATE 'DISCONNECT';
-- dbms_utility.exec_ddl_statement('DISCONNECT');
end if;
end;
/

What's wrong with both:

EXECUTE IMMEDIATE 'DISCONNECT';

and

dbms_utility.exec_ddl_statement('DISCONNECT');