Поскольку это блок PL / SQL, ваши операторы SELECT должны будут выбирать данные в какую-то локальную переменную, или они должны использоваться в курсоре.Какой подход вам нужен, зависит от того, сколько строк в T_JOB
потенциально может соответствовать указанным вами критериям.Предполагая, что все три оператора будут возвращать ровно одну строку, вы можете сделать что-то вроде этого (код упрощен, чтобы избежать повторения одного и того же запроса дважды)
DECLARE
l_some_local_variable PLS_INTEGER;
BEGIN
IF( to_number( to_char( sysdate, 'HH24' ) ) > 6 and
to_number( to_char( sysdate, 'HH24' ) ) < 9 )
THEN
SELECT 1
INTO l_some_local_variable
FROM dual;
ELSE
SELECT (CASE WHEN result = 'SUCCESS'
THEN 1
ELSE 0
END)
INTO l_some_local_variable
FROM t_job
WHERE trunc( start_time ) = trunc( sysdate );
END IF;
END;
Конечно, после заполнения данных в локальной переменной вынужно будет на самом деле сделать что-то со значением.Потенциально вы можете захотеть создать функцию, которая возвращает локальную переменную, а не использовать анонимный блок PL / SQL, как я сделал здесь.