create or replace function CalculategWorkIntensity( v_vehicleno in varchar2,v_gouzhong in number,
p_date_begin in  date,
p_date_end  in   date)return number is
  v_q1  number;
  v_q2  number;
  v_q3  number;
  v_q4  number;
  v_q5  number;
  v_q6  number;
  v_q7  number; begin end CalculategWorkIntensity;
我要在存储过程中调用该函数,并且给几个变量赋值,怎么不能用如下语句  select CalculategWorkIntensity() into q1,q2,q3,q4,q5,q6,q7 他怎么提示说参数过多呀?
应该怎么做呀?

解决方案 »

  1.   

    应该是select CalculategWorkIntensity(q1,q2,q3,q4) from dual ,返回的数据就是v_q1,v_q2,v_q3,v_ q4,v_q5,v_q6,v_q7
      

  2.   


    --你的函数一共是4个参数,而返回是一个数值型的值,按如下这种调用
    declare 
    v_n number;
    begin
        v_n := CalculategWorkIntensity(参数1,参数2,参数3,参数4);
    --或 select CalculategWorkIntensity(参数1,参数2,参数3,参数4) into v_n from dual;
        dbms_output.put_line(v_n);
    end;
    /
      

  3.   

    函数返回值只能有1个。如果你需要达到返回多个的效果,可以用输出参数。create or replace function CalculategWorkIntensity( v_vehicleno in varchar2,v_gouzhong in number,
    p_date_begin in date,
    p_date_end in date,
    p_q1 out number,
    p_q2 out number,
    p_q3 out number,
    p_q4 out number
    )
      

  4.   

    如果想返回的是多个参数就该用下面的代码create or replace function CalculategWorkIntensity( v_vehicleno in varchar2,v_gouzhong in number,
    p_date_begin in date,
    p_date_end in date,
      
      v_q2 out number,
      v_q3 out number,
      v_q4 out number,
      v_q5 out number,
      v_q6 out number,
      v_q7 out number
    )
     begin end CalculategWorkIntensity;调用就用三楼的就行了。