procedure to select the first name of the passed id I have a table person_name

DESC PERSON_NAME
Name          Null     Type         
------------- -------- ------------ 
ID         NOT NULL NUMBER(9)         
FIRSTNAME           VARCHAR2(20)      
LASTNAME   NOT NULL VARCHAR2(30) 



SELECT * FROM PERSON_NAME
id | firstname | lastname
--------------------------
1  | Bruce     | Wayne
2  | Clark     | Kent
3  | Barry     | Allen
4  | Hal       | Jordan


I have the following procedure

create or replace
PROCEDURE SEARCH_PERSON_USING_ID
(
 IN_ID IN NUMBER
)
AS
  vNAME VARCHAR2(30);
BEGIN
  SELECT pn.firstname INTO vName
    FROM person_name pn
    WHERE pn.id = in_id
     AND  rownum &lt; 2 ;

  dbms_output.put_line('NAME = ' || vNAME);

  EXCEPTION
    WHEN  no_data_found THEN
    vName := null;
END;


It compiles with no problem.
But when I run it, I get the following error

set serveroutput on;
EXECUTE SEARCH_PERSON_USING_SISID(1);


Output: 

anonymous block completed
NAME = Bruce


Why the 
    anonymous block completed
anonymous block completed is not an error, just an informational message. Actually, when you use EXECUTE, you implicitly use an anonymous block. If you want to get rid of that message, you can turn it off by:

set feedback off