Quando você escreve
select * from some_table; em SQL*Plus, SQL*Plus está atuando como o programa cliente e faz muito trabalho para você, nos bastidores, em termos de dados retornados do banco de dados, formatação e exibição. Assim que você digitar
DECLARE , você inicia um bloco PL/SQL. Agora, você está chamando PL/SQL e PL/SQL está chamando SQL. Como resultado, você precisa decidir como lidar com os dados retornados do SQL, em PL/SQL. A maneira de fazer isso é através de um INTO cláusula e uma variável para receber a saída. Considerando isso, onde estariam os dados de saída do SELECT vá, se você não fornecer um INTO cláusula? Tem que ir para algum lugar, certo? Espero que esteja claro.