sql >> データベース >  >> RDS >> Oracle

ID列を持つOracleテーブルに挿入するときに%ROWTYPEを使用するにはどうすればよいですか?

    あなたが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;    
    


    1. )初心者のためのオペレーター

    2. 500内部サーバーエラー?

    3. mysqlをswiftに接続する方法は?

    4. 合計を含む要約行を追加します