Sarebbe bello se potessimo fare qualcosa del genere, ma ahimè:
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>
Credo che potrebbe esserci una richiesta di modifica registrata per questa funzione, perché so che molte persone la vogliono. Ma per il momento tutto ciò che possiamo fare è la specificazione prolissa di ogni colonna:
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>
Brutte notizie se hai molte colonne!
Sospetto che la logica sia che la maggior parte delle tabelle abbia relativamente poche colonne derivate (sequenza assegnata a un ID, sysdate assegnato a CREATED_DATE, ecc.), Quindi la maggior parte dei valori dovrebbe già essere nota (o almeno conoscibile) al processo di inserimento.
modifica
Pensavo di averlo chiarito, ma comunque:sì al momento è impossibile usare *
o qualche meccanismo non specifico simile in una clausola RETURNING.