Alangkah baiknya jika kita bisa melakukan hal seperti itu tapi sayangnya:
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>
Saya yakin mungkin ada permintaan perubahan yang dicatat untuk fitur ini, karena saya tahu banyak orang menginginkannya. Tapi untuk saat ini yang bisa kita lakukan hanyalah spesifikasi panjang lebar dari setiap kolom:
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>
Berita buruk jika Anda memiliki banyak kolom!
Saya menduga alasannya adalah, sebagian besar tabel memiliki kolom turunan yang relatif sedikit (urutan yang ditetapkan ke ID, sysdate yang ditetapkan ke CREATED_DATE, dll) sehingga sebagian besar nilai seharusnya sudah diketahui (atau setidaknya dapat diketahui) untuk proses penyisipan.
edit
Saya pikir saya telah menjelaskannya, tetapi bagaimanapun:ya saat ini tidak mungkin untuk menggunakan *
atau mekanisme tidak spesifik serupa dalam klausa RETURNING.