my/sql函数 返回值问题

一粟天天挤地铁 发布于 2015/09/13 10:13
阅读 412
收藏 0
案例:创建函数求所有员工的总工资,平均工资,最低工资,最高工资。
 问题 :为什么返回了v_sum 在执行过程中 还能得到 v_max,v_min,_v_avg??是参数的输出吗?还是自动返回参数列表内容?? 求老师们帮助我  我是新人 
 create or replace function query_sal(v_avg out number,v_max out number,v_min out number)
 return number
 is
 v_sum number;
 begin
   select sum(sal),avg(sal),max(sal),min(sal)
   into v_sum,v_avg,v_max,v_min from emp;
   v_avg:=round(v_avg,2);
   return v_sum;
 end;
 
 调用
 
declare
 v_sum number;
 v_avg number;
 v_max number;
 v_min number;
begin
  v_sum:=query_sal(v_avg,v_max,v_min);
  dbms_output.put_line('v_sum = '||v_sum);
  dbms_output.put_line('v_avg = '||v_avg);
  dbms_output.put_line('v_max = '||v_max);
  dbms_output.put_line('v_min = '||v_min);
end;
 
加载中
0
b
bolean
v_sum 是函数的返回值, v_max,v_min,_v_avg是函数的输出参数
0
张乐1024
张乐1024
create or replace function query_sal(v_avg out number,v_max out number,v_min out number)
 return number
 is
//其实你的问题可以从这段代码找出答&案,
//存储过程的参数分为
//[IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值]
//[OUT 输出参数:该值可在存储过程内部被改变,并可返回]
//[INOUT 输入输出参数:调用时指定,并且可被改变和返回]
//然后你看你的参数定义v_avg out number ... v_min out number
//所以这里用的是输出参数,至于最后的v_sum,是取的存储过程的返回值,看定义部分return number,这样你就可以同时得到所有的这几个参数的结果。



返回顶部
顶部