A PL/SQL record can contain different data types.

PL/SQL Table Data Type: Unlike a database table in Oracle , it contains/retrieves a single column. This data type allow creating an array of fields/ columns of a DATA BASE TABLE.

A PL/SQL table data type and a database table are two distinct objects exist in Oracle DBMS. A user defined %TYPE is more flexible than that of %ROWTYPE  .

The %ROWTYPE  attribute handles pl/sql table-based as well as cursor based records. It simply suffice to sync identical to the structure of a specified table.

declare emp_rec1 emp%rowtype;
SELECT * into emp_rec1
FROM emp where empno = 7521 ;
dbms_output.put_line('emp empno :'|| emp_rec1.empno);
dbms_output.put_line('emp emname :'|| emp_rec1.ename);
dbms_output.put_line('emp job :'|| emp_rec1.job);
dbms_output.put_line('emp mgr :'|| emp_rec1.mgr);

Please review this article/example of using %TYPE proce_empcur1.htm