| pl/sql stored procedure execute/return value [message #560532] |
Fri, 13 July 2012 23:43  |
 |
lrncon
Messages: 1 Registered: July 2012
|
Junior Member |
|
|
I am creating a stored procedure with pl/sql for the first time. I need this procedure to execute and return values for the employee with the maximum salary by displaying the employee's last name and max salary. I have gotten the procedure to create and the exec statement gives me a "procedure successfully completed" message, without the returned values. I have modified the procedure several times to try to get the results I am looking for, with no luck. I have searched google for an answer, I haven't found anything that makes any sense to me at this point. Do I need to declare something within the procedure?
SQL> create or replace procedure max_salary
2 is
3 last_name varchar(25);
4 salary number(8,2);
5 begin
6 select last_name, salary into last_name, salary
7 from employees
8 Where salary = (select Max(salary) from employees);
9 end;
10 /
Procedure created.
SQL> excute max_salary;
SP2-0734: unknown command beginning "excute max..." - rest of line ignored.
SQL> exec max_salary;
PL/SQL procedure successfully completed.
SQL> create or replace procedure max_salary
2 is
3 last_name varchar(25);
4 salary number(8,2);
5 begin
6 select last_name, salary into last_name, salary
7 from employees
8 Where salary = (select Max(salary) from employees);
9 dbms_output.put_line('salary: ' || last_name);
10 end;
11 /
Procedure created.
SQL> execute max_salary;
PL/SQL procedure successfully completed.
|
|
|
|
|
|
|
|
|
|
| Re: pl/sql stored procedure execute/return value [message #560539 is a reply to message #560536] |
Sat, 14 July 2012 01:15  |
 |
Michel Cadot
Messages: 54236 Registered: March 2007 Location: Nanterre, France, http://...
|
Senior Member Account Moderator |
|
|
Or if you really want to use a procedure then use OUT paramaters:
SQL> drop function max_salary;
Function dropped.
SQL> create or replace procedure max_salary (last_name out emp.ename%type, salary out emp.sal%type)
2 is
3 begin
4 select ename, sal into last_name, salary
5 from emp
6 where sal = (select max(sal) from emp)
7 and rownum = 1; -- in case several employess with max salary
8 end;
9 /
Procedure created.
SQL> var last_name varchar2(30)
SQL> var salary number
SQL> set autoprint on
SQL> exec max_salary (:last_name, :salary)
PL/SQL procedure successfully completed.
SALARY
----------
5000
LAST_NAME
--------------------------------
KING
Regards
Michel
|
|
|
|