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 他怎么提示说参数过多呀?
应该怎么做呀?
------解决方案--------------------
你的函数返回只有一个值。。
------解决方案--------------------
应该是select CalculategWorkIntensity(q1,q2,q3,q4) from dual ,返回的数据就是v_q1,v_q2,v_q3,v_ q4,v_q5,v_q6,v_q7
------解决方案--------------------
- SQL code
--你的函数一共是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;/
------解决方案--------------------
函数返回值只能有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
)
------解决方案--------------------
如果想返回的是多个参数就该用下面的代码
- SQL code
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;调用就用三楼的就行了。