日期:2014-05-16  浏览次数:20630 次

oracle存储过程和函数的调用
--创建存储过程
create or replace procedure pro_add(num1 number,num2 number,r out number)
as
begin
r:=num1+num2;
end;


create or replace procedure pro_minus(num1 number,num2 number,r out number)
as
begin
r:=num1-num2;
end;


--创建函数
create or replace function fcn_add(num1 number,num2 number)
return number is r number;
begin
r:=num1+num2;
return r;
end;


create or replace function fcn_minus(num1 number,num2 number)
return number is
begin
return num1-num2;
end;


create or replace function fcn_minus1(num1 number,num2 number)
return number is
r number;
r1 number;
begin


r:=num1-num2;
r1:=num2-num1;


if r-r1>0 then
return r;
else
return r1;
end if;


end;


--调用存储过程
declare
n1 number;
n2 number;
r number;
fr number;
begin
n1:=3;
n2:=2;
pro_add(n1,n2,r);
dbms_output.put_line('相加的结果:'||r);
--1可以使用这种方式来获取存储过程的返回值
pro_minus(n1,n2,r);
--2也可以使用这种方式来获取存储过程的返回值
pro_minus(num1 => n1,num2 => n2,r => r);
--如果使用1的方式那么所有的参数都需要使用这种方式传进去
--如果使用2的方式那么所有的参数都需要使用相同的方式去写
--第二种方式使用的是相关性
dbms_output.put_line('相减的结果:'||r);
end;


--调用function
declare
n1 number;
n2 number;
r number;
begin


--获取函数的返回值的时候只需要按照正常的方式去调用它就行了
n1:=3;
n2:=5;
r:=fcn_add(num1 => n1,num2 => n2);
dbms_output.put_line('相加的结果:'||r);
r:=fcn_minus(num1 => n1,num2 => n2);
dbms_output.put_line('使用fcn_minus相减的结果:'||r);
r:=fcn_minus1(num1 => n1,num2 => n2);
dbms_output.put_line('使用fcn_minus1相减的结果:'||r);


end;






我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html