Kiedy piszesz select * from some_table; w SQL*Plus, SQL*Plus działa jako program kliencki i wykonuje dla ciebie dużo pracy, pod przykrywką, w zakresie danych zwracanych z bazy danych, formatowania ich i wyświetlania.
Jak tylko wpiszesz DECLARE , zaczynasz blok PL/SQL. Teraz wołasz PL/SQL, a PL/SQL wołasz SQL. W rezultacie musisz zdecydować, jak obsłużyć dane zwracane z SQL w PL/SQL. Sposobem na to jest użycie INTO klauzula i zmienna do odbioru danych wyjściowych. Biorąc to pod uwagę, gdzie byłyby dane wyjściowe z SELECT idź, jeśli nie podasz INTO klauzula? Musi gdzieś iść, prawda?
Mam nadzieję, że to jasne.