Điều đó sẽ không hoạt động. RETURNING
không thể sử dụng mệnh đề theo cách bạn đang làm, tức là
insert into t (id, my_pk)
select some_id, your_function from ...
returning into v_output
nhưng sẽ hoạt động nếu bạn chèn VALUES
, với tư cách là
insert into t
values (id, your_function)
returning my_pk into v_output
Điều đó có nghĩa là bạn sẽ phải viết lại mã đó hoặc xem xét cách giải quyết khác được mô tả trong quay lại với insert..select bài báo (được viết bởi Adrian Billington).
BTW, một chuỗi Oracle thông thường sẽ không phù hợp với mục đích của bạn sao? Sẽ không thiếu, nhưng sẽ đơn giản và hiệu quả. Lưu ý đến hiệu suất khi chèn một lượng lớn dữ liệu, sử dụng giải pháp của bạn.
BTW # 2, mục đích của dòng cuối cùng trong hàm của bạn là gì? Bạn không bao giờ sử dụng N_VALUE.