То, что у вас есть, это технически не процедура , а функция - разница в том, что процедура не имеет возвращаемого значения и не может использоваться как правая сторона инструкции присваивания.
У вас есть два варианта:
(1) Используйте параметры OUT. В этом случае я бы сделал процедуру с двумя параметрами OUT. Обычно людям не нравятся функции, которые также имеют параметры OUT, поскольку это нарушает обычные ожидания. @ Ответ Бенуа показывает этот метод.
(2) Определите тип, который содержит несколько значений, и используйте его в качестве возвращаемого типа функции. Пример:
CREATE TYPE two_values AS object (
A NUMBER,
b number
);
/
CREATE FUNCTION get_two_values RETURN two_values AS
BEGIN
RETURN two_values(2,4);
END;
/