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.