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

PL /SQLROWのすべての属性を返す方法

    そのようなことができればいいのですが、残念ながら:

    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>
    

    多くの人がそれを望んでいることを私は知っているので、私はこの機能のログに記録された変更要求があるかもしれないと信じています。しかし、今のところ私たちにできることは、すべての列の長々とした仕様です:

    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>
    

    列がたくさんある場合は悪いニュースです!

    ほとんどのテーブルには派生列(IDに割り当てられたシーケンス、CREATED_DATEに割り当てられたsysdateなど)が比較的少ないため、ほとんどの値は挿入プロセスですでに認識されている(または少なくとも認識されている)はずです。

    編集

    はっきりさせたと思いましたが、とにかく:はい、現在*を使用することはできません。 またはRETURNING句の同様の非特定のメカニズム。




    1. JSON文字列をMySQLデータベースに保存する

    2. ユーザーの場所に基づいてデータベース値を照会する

    3. phpでタイムライングーグルチャートAPIを使用-DataTableの初期化

    4. MySQLのORDERBYNULL