Well, you are already using a cursor-based record! :-
student_val c_student%ROWTYPE;
i.e. the record type is defined in terms of the cursor c_student.
The table-based cursor would be student%ROWTYPE.
If you use a cursor FOR loop you can get rid of the declaration altogether, along with a lot of other code:
Code:
SET SERVEROUTPUT ON;
DECLARE
CURSOR c_student IS
SELECT * FROM student;
begin
open c_student;
for student_val in c_student loop
DBMS_OUTPUT.PUT_LINE('Student Details: ' || student_val.salutation || student_val.first_name
|| student_val.last_name || student_val.phone || student_val.Registration_date );
end loop;
end;