I don't think we've ever supported that. It is only supported for updates and deletes
SQL> create table test(a number, b varchar2(10));
Table created.
SQL>
SQL> insert into test values (1,'a');
1 row created.
SQL> insert into test values (2,'b');
1 row created.
SQL> insert into test values (3,'c');
1 row created.
SQL> insert into test values (4,'d');
1 row created.
SQL>
SQL>
SQL> declare
2 i number;
3 begin
4 insert into test(a,b)
5 select 1, 'a' from dual union all
6 select 2, 'b' from dual union all
7 select 3, 'c' from dual
8 returning max(a) into i;
9 end;
10 /
returning max(a) into i;
*
ERROR at line 8:
ORA-06550: line 8, column 13:
PL/SQL: ORA-00933: SQL command not properly ended
ORA-06550: line 4, column 3:
PL/SQL: SQL Statement ignored
SQL>
SQL> declare
2 i number;
3 begin
4 update test
5 set b = 'x'
6 returning max(a) into i;
7 end;
8 /
PL/SQL procedure successfully completed.
SQL>
SQL>
You can return *all* of the inserted values using a RETURNING BULK COLLECT but you can't just return an aggregate.