Процедура не может быть выполнена с помощью оператора select, вы можете использовать функцию, если вы хотите выполнить ее с помощью оператора select.
Если вы хотите выполнить процедуру с использованием оператора select, то один из подходов - это обернуть вашу процедуру с помощью функция и функция вызова с использованием оператора select.
CREATE OR REPLACE PROCEDURE pr (o_param OUT DATE)
IS
v_date DATE;
BEGIN
SELECT SYSDATE
INTO v_date
FROM DUAL;
o_param := v_date;
END pr;
Теперь завершите процедуру с помощью функции
CREATE OR REPLACE FUNCTION my_funct
RETURN DATE
AS
o_param DATE;
BEGIN
pr (o_param);
RETURN o_param;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.put_line (
DBMS_UTILITY.format_error_backtrace || ' ' || SQLERRM
);
-- raise exception
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (
DBMS_UTILITY.format_error_backtrace || ' ' || SQLERRM
);
-- raise exception
END my_funct;
/
И вызовите функцию с помощью оператора select
SELECT my_funct FROM DUAL