Something like this should result into the desired behavior (read old value and write new value):
process (clk)
begin
if (clk'event and clk = '1') then
if (write_enable = '1') then
ram_block(write_address) <= new_data;
end if;
old_data <= ram_block(read_address);
end if;
end process;