我们可以用两种方式创建存储过程

方式1

 

一:我们先创建一个存储过程,这里我们用的是 oracle中 用户scott里的emp(员工表)

create or replace procedure p_emp (p_ename in varchar2,outsalcomm out number) --in 输入;out 输出
as --也可以写成 is
x number;
y number;
begin
select sal,nvl(comm,0) INTO x,y from scott.emp where ename=p_ename;--comm是奖金列,用nvl()函数对null值填充数字0
outsalcomm :=x+y;
end;
/

set serverout on; --别忘了 开启输出!
execute p_emp('SMITH');--如果不出结果,按以下方法执行

二:我们采用定义变量的方式
declare
inname varchar2(25);--须给范围
outsalcomm number;
begin
inname := 'SMITH';
p_emp (inname,outsalcomm);
dbms_output.put_line(outsalcomm);--别忘了输出
end;
/

方式2

create or replace procedure p_emp (p_ename in varchar2)
as
x number;
y number;
begin
select sal,nvl(comm,0) INTO x,y from scott.emp where ename=p_ename;
DBMS_OUTPUT.PUT_LINE(x + y);
end;
/
set serverout on;
execute p_emp('SMITH');