Na minha opinião caberia recurso nessa questão, pelo que é dito na letra a):
a) A seção de Declaração é opcional somente quando o bloco não utilizar constantes ou variáveis.
O autor diz que a parte declarativa é opcional somente quando o bloco não utilizar constantes ou variáveis. Acontece que ela deixa de ser opcional quando eu preciso declarar subprogramas, como no exemplo abaixo:
DECLARE
PROCEDURE proc1(number1 NUMBER); -- forward declaration
PROCEDURE proc2(number2 NUMBER) IS
BEGIN
proc1(number2); -- calls proc1
END;
PROCEDURE proc1(number1 NUMBER) IS
BEGIN
proc2 (number1); -- calls proc2
END;
BEGIN
NULL;
Portanto, a palavra somente, em minha opinião, deixa a assertiva incorreta.