それはうまくいきません。 RETURNING
句は、あなたがしているように使用することはできません。つまり、
insert into t (id, my_pk)
select some_id, your_function from ...
returning into v_output
ただし、VALUES
を挿入すると機能します 、as
insert into t
values (id, your_function)
returning my_pk into v_output
つまり、そのコードを書き直すか、回避策を確認する必要があります。 insert..selectで戻る で説明されています 記事(エイドリアンビリントンによって書かれました)。
ところで、通常のOracleシーケンスはあなたの目的に合っていませんか?ギャップがないわけではありませんが、シンプルで効果的です。ソリューションを使用して、大量のデータを挿入するときのパフォーマンスに注意してください。
ところで#2、あなたの関数の最後の行の目的は何ですか? N_VALUEを使用することはありません。