あなたが12cを使用しているので、私が考えることができる唯一のことは、ID列をINVISIBLE
にすることです。 、以下のコードのように。
問題は、%ROWTYPE
を取得することです。 with idはもう少し難しいですが、実行可能です。
もちろん、テーブルを使用している他の人が主キーを表示できないことも混乱する可能性があります。
私はこれをやろうとは思いませんが、 あなたの質問への答え、それが何の価値があるか。
DROP TABLE t;
CREATE TABLE t ( id number invisible generated always as identity,
val varchar2(30));
insert into t (val) values ('A');
DECLARE
record_without_id t%rowtype;
CURSOR c_with_id IS SELECT t.id, t.* FROM t;
record_with_id c_with_id%rowtype;
BEGIN
record_without_id.val := 'C';
INSERT INTO t VALUES record_without_id;
-- If you want ID, you must select it explicitly
SELECT id, t.* INTO record_with_id FROM t WHERE rownum = 1;
DBMS_OUTPUT.PUT_LINE(record_with_id.id || ', ' || record_with_id.val);
END;
/
SELECT id, val FROM t;