 <p>Your procedure takes two parameters. You are calling it without any parameters. Oracle thus looks for a procedure named <code>spfirst</code> that takes no parameters, finds no such procedure, and throws an error.</p> <p>Something like</p> <pre><code>DECLARE l_location nilesh.location%type; l_salary nilesh.monthly_salary%type; BEGIN spfirst( l_location, l_salary ); END; </code></pre> <p>should work. Of course, you'd generally want to do something with the variables that are returned. If you've enabled <code>dbms_output</code>, you could print them out</p> <pre><code>DECLARE l_location nilesh.location%type; l_salary nilesh.monthly_salary%type; BEGIN spfirst( l_location, l_salary ); dbms_output.put_line( 'Location = ' || l_location ); dbms_output.put_line( 'Salary = ' || l_salary ); END; </code></pre> <p>Be aware that your procedure will throw an error unless the <code>nilesh</code> table has exactly one row. It seems likely that you either want the procedure to take an additional parameter that is the key to the table so that the <code>select into</code> always returns a single row or that you want a function that returns a <code>sys_refcursor</code> rather than a procedure that has multiple <code>out</code> parameters.</p>