How do you capture the output message from a successful MERGE statement when using it in a procedure?
You can use SQL%ROWCOUNT. This return rows processed in last sql statement
For example:

declare
res number;
begin
select 0 into res from dual;
dbms_output.put_line(sql%rowcount || ' rows selected');
end


This code prints 1 rows selected because you selected one row. I hope this helps