Если бы Вы хотите использовать его в простом SQL, я позволил бы процедуре хранилища заполнить таблицу или временную таблицу с получающимися строками (или пойти для @Tony подхода Andrews).
, Если Вы хотите использовать решение @Thilo, необходимо циклично выполнить курсор, использующий МН / SQL. Здесь пример: (Я использовал процедуру вместо функции, как @Thilo сделал)
create or replace procedure myprocedure(retval in out sys_refcursor) is
begin
open retval for
select TABLE_NAME from user_tables;
end myprocedure;
declare
myrefcur sys_refcursor;
tablename user_tables.TABLE_NAME%type;
begin
myprocedure(myrefcur);
loop
fetch myrefcur into tablename;
exit when myrefcur%notfound;
dbms_output.put_line(tablename);
end loop;
close myrefcur;
end;
Использование Commons Lang (для преобразования) + Коллекции (в мин. / Макс.)
import java.util.Arrays;
import java.util.Collections;
import org.apache.commons.lang.ArrayUtils;
public class MinMaxValue {
public static void main(String[] args) {
char[] a = {'3', '5', '1', '4', '2'};
List b = Arrays.asList(ArrayUtils.toObject(a));
System.out.println(Collections.min(b));
System.out.println(Collections.max(b));
}
}
Обратите внимание, что Arrays.asList ()
обертывает базовый массив, поэтому он не должен занимать слишком много памяти и не должно выполнять копирование элементов массива.
Вот служебный класс, предоставляющий методы min / max
для примитивных типов: Primitives .java
Да, это делается в классе Collections . Обратите внимание, что вам нужно будет вручную преобразовать ваш примитивный массив char в Character [].
Короткая демонстрация:
import java.util.*;
public class Main {
public static Character[] convert(char[] chars) {
Character[] copy = new Character[chars.length];
for(int i = 0; i < copy.length; i++) {
copy[i] = Character.valueOf(chars[i]);
}
return copy;
}
public static void main(String[] args) {
char[] a = {'3', '5', '1', '4', '2'};
Character[] b = convert(a);
System.out.println(Collections.max(Arrays.asList(b)));
}
}
Библиотека Google Guava имеет методы min и max в своих классах Chars, Ints, Longs и т. Д.
Таким образом, вы можете просто использовать:
Chars.min(myarray)
Нет требуется преобразование, и предположительно это эффективно.