I'm not sure which discussion you're referring to - the link leads back to the homepage. Also those docs are from 9i - over 20 years old now!
The syntax:
insert into ... values <rec>
Is only for adding PL/SQL records. To insert an object type, list its attributes specifically. Or - as you can query an object table like a regular table - use insert select to add the rows.
For example:
CREATE OR REPLACE PACKAGE BODY xxylp_emp_pkg
AS
PROCEDURE insert_rec (p_emp_typ IN emp_type)
AS
BEGIN
for rws in ( select * from table ( p_emp_typ ) ) loop
dbms_output.put_line ( rws.empno );
end loop;
FORALL idx IN p_emp_typ.FIRST .. p_emp_typ.LAST
INSERT INTO emp ( empno, ename )
VALUES ( p_emp_typ(idx).empno, p_emp_typ(idx).ename );
dbms_output.put_line('Insert Count: '||SQL%ROWCOUNT);
INSERT INTO emp ( empno, ename )
select empno, ename from table ( p_emp_typ );
dbms_output.put_line('Insert Count: '||SQL%ROWCOUNT);
END insert_rec;
END xxylp_emp_pkg;
/
begin
XXYLP_EMP_PKG.INSERT_REC (
emp_type (
emp_obj ( 1, 'test', 'JOB', null, sysdate, 1000, 0, 10 ),
emp_obj ( 2, 'test', 'JOB', null, sysdate, 2000, 0, 10 )
)
);
end;
/
1
2
Insert Count: 2
Insert Count: 2
select empno, ename from emp;
EMPNO ENAME
---------- --------------------
1 test
2 test
1 test
2 test