When you create your procedure, you should see something like
Warning: Procedure created with compilation errors.
If you type "show errors" or open the procedure in SQL Developer and compile the procedure, you'll get a list of errors. If you do that, you'll see something like
SQL> sho err
Errors for PROCEDURE MY_PROC:
LINE/COL ERROR
-------- -----------------------------------------------------------------
1/19 PLS-00103: Encountered the symbol ")" when expecting one of the
following:
<an identifier> <a double-quoted delimited-identifier>
current delete exists prior
This is telling you that the open and close parent that are part of your create or replace procedure statement are invalid. If a procedure takes no arguments, you would omit the parenthesis in your definition
create or replace procedure f
is
BEGIN
DBMS_OUTPUT.put_line('Hello world!');
END;
That should compile and should be callable from your anonymous PL/SQL block.