Sẽ thật gọn gàng nếu chúng ta có thể làm điều gì đó như vậy nhưng than ôi:
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>
Tôi tin rằng có thể có một yêu cầu thay đổi được ghi lại cho tính năng này, bởi vì tôi biết rất nhiều người muốn nó. Nhưng hiện tại, tất cả những gì chúng ta có thể làm là đặc tả dài dòng của mọi cột:
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>
Tin xấu nếu bạn có nhiều cột!
Tôi nghi ngờ cơ sở lý luận là, hầu hết các bảng có tương đối ít cột dẫn xuất (trình tự được gán cho một ID, ngày mã hóa được gán cho CREATED_DATE, v.v.) vì vậy hầu hết các giá trị phải được biết (hoặc ít nhất là có thể biết) cho quá trình chèn.
chỉnh sửa
Tôi nghĩ rằng tôi đã nói rõ ràng, nhưng dù sao thì:vâng, hiện tại không thể sử dụng *
hoặc một số cơ chế không cụ thể tương tự trong mệnh đề RETURNING.