Вы можете использовать DDL в цикле, но вам придется создавать строку, поскольку вы не можете связать имена объектов.
Например:
DECLARE
l_ddl VARCHAR2(1000);
BEGIN
FOR rec IN (SELECT username
FROM dba_users
WHERE username LIKE 'S%'
AND username NOT LIKE 'SY%') LOOP
l_ddl := 'drop user '|| rec.username ||' cascade';
dbms_output.put_line(l_ddl);
EXECUTE IMMEDIATE (l_ddl);
END LOOP;
END;
Будьте осторожны,DDL не является транзакционным в Oracle (он выполняет коммит до и после), и поэтому вы не сможете откатить любые изменения.