Você não pode reduzir o número de consultas - todas elas fazem coisas diferentes - mas você pode reduzir o número de viagens de ida e volta ao banco de dados e o número de análises envolvendo tudo como uma função PLSQL.
No entanto, você não pode selecionar os dados depois de excluí-los, mas considere:
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 - você também pode executar várias seleções no mesmo procedimento e lidar com vários conjuntos de resultados de formatos diferentes, por exemplo, veja esta página