是否有一个能够获得varray最大值的函数.. 实际上我一直这样做..
DECLARE
l_max NUMBER;
type type_value is varray(5) of number;
arr_value type_value := type_value (0,0,0,0,0);
BEGIN
SELECT MAX(field) INTO arr_value (1) FROM table1;
SELECT MAX(field) INTO arr_value (2) FROM table2;
arr_value(3) := 63; --fixed values
SELECT MAX(field) INTO arr_value (4) FROM table3;
arr_value (5) := 53; --fixed values
l_max:= arr_value(1);
for i in 1..arr_value .count
loop
if l_max< arr_value (i)
then
l_max := arr_value (i);
end if;
end loop;
DBMS_OUTPUT.PUT_LINE(l_max);
有什么像GREATEST(varray)吗?
由于
答案 0 :(得分:1)
使用本地声明的 varray
类型,您无法做到这一点。
但是,如果声明了varray
类型:
create type
)或然后你可以使用select语句:
declare
arr_value type_value := type_value (0,43,1,7,3);
-- Alternatively:
-- arr_value type_value := my_package.type_value (0,43,1,7,3);
begin
select max(column_value)
into l_max
from table(arr_value);
dbms_output.put_line('max is '||l_max);
end;
答案 1 :(得分:0)
您的方法非常有效,没有内置函数可以在VARRAY
内返回最大值,即使有一个,也可能会运行完全相同的代码;)