Non puoi ridurre il numero di query - fanno tutte cose diverse - ma puoi ridurre il numero di round trip al database e il numero di analisi avvolgendo tutto come una funzione PLSQL.
Tuttavia non puoi selezionare i dati dopo averli eliminati..... ma considera:
CREATE PROCEDURE s_u_d(a)
BEGIN
UPDATE tab_x SET tab_x.avalue=1 WHERE tab_x.another=a;
DELETE FROM tab_y WHERE tab_y.avalue=a;
SELECT *
FROM tab_x
WHERE tab_x.another=a;
END;
NB:puoi anche eseguire selezioni multiple nella stessa procedura e gestire più set di risultati di forma diversa, ad es. vedi questa pagina