Seria legal se pudéssemos fazer algo assim, mas infelizmente:
SQL> declare
2 v_row t23%rowtype;
3 begin
4 insert into t23
5 values (my_seq.nextval, 'Daisy Head Maisy')
6 returning * into v_row;
7 end;
8 /
returning * into v_row;
*
ERROR at line 6:
ORA-06550: line 6, column 19:
PL/SQL: ORA-00936: missing expression
ORA-06550: line 4, column 5:
PL/SQL: SQL Statement ignored
SQL>
Acredito que possa haver uma solicitação de alteração registrada para esse recurso, porque sei que muitas pessoas o desejam. Mas, no momento, tudo o que podemos fazer é a especificação prolixa de cada coluna:
SQL> declare
2 v_row t23%rowtype;
3 begin
4 insert into t23
5 values (my_seq.nextval, 'Daisy Head Maisy')
6 returning id, person_name into v_row;
7 end;
8 /
PL/SQL procedure successfully completed.
SQL>
Más notícias se você tem muitas colunas!
Suspeito que a lógica é que a maioria das tabelas tem relativamente poucas colunas derivadas (sequência atribuída a um ID, sysdate atribuída a um CREATED_DATE etc.), portanto, a maioria dos valores já deve ser conhecida (ou pelo menos cognoscível) para o processo de inserção.
editar
Achei que tinha deixado claro, mas enfim:sim atualmente é impossível usar
*
ou algum mecanismo não específico semelhante em uma cláusula RETURNING.