我有一个带有以下签名的ORACLE函数。
Function function1(parameter1 in number,
parameter2 in number,
parameter3 in number,
parameter4 out number,
parameter5 out varchar(20),
parameter6 out varchar(20))
RETURN number is
我想在像这样的SQL中使用这个函数,
Select parameter5
from table1 ti
where function1(t1.parameter1,t1.parameter2,t1.parameter3)
如何在Select语句中访问输出参数5?由于我想批量执行上面的选择操作,我不习惯使用变量并循环遍历结果集。
我不想使用数组,因为我必须使用上面的SQL Query批量执行一些操作。
提前致谢!
干杯, Dwarak
答案 0 :(得分:1)
你不能直接,但你可以在它周围放一个包装函数,如:
function function1_wrap(parameter1 in number,
parameter2 in number,
parameter3 in number)
return varchar2 is
declare
rc number;
parameter4 number;
parameter5 out varchar(20);
parameter6 out varchar(20);
begin
rc := function1(parameter1, parameter2, parameter3, parameter4, parameter5);
return parameter5;
end;
虽然这可能不适合批量操作;你最好尝试复制函数如何获取值并将其组合到你的选择中,而不是多次调用函数。您可以删除找到参数4和6的值的部分,以便开始。
答案 1 :(得分:1)
我假设你需要参数5和返回的数字,所以如果你创建一个类型并重新调整它可能会更好。
类似的东西:
create type res_type as object
(
rc number,
parameter5 varchar2(20)
);
Function function1(parameter1 in number,
parameter2 in number,
parameter3 in number,
parameter4 out number,
parameter5 out varchar(20),
parameter6 out varchar(20))
RETURN res_type is
更新:
然后在您的选择中,您可以执行以下操作:
select function1(t1.parameter1,t1.parameter2,t1.parameter3).parameter5
from table1 ti
where function1(t1.parameter1,t1.parameter2,t1.parameter3).rc = ....
答案 2 :(得分:-1)
你可以使用下面的子查询,
select * from(select t1.parameter1,t1.parameter2,t1.parameter3 function1(t1.parameter1,t1.parameter2,t1.parameter3)func_result from table1 t1)其中func_result = 1