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

文字列をループするときに一時テーブルに挿入する方法-Oracle-PL/SQL

    Oracle 12cを使用する場合 、次にIDENTITYを定義できます GENERATED ALWAYS AS IDENTITYまでの列 テーブル定義で、以下の方法に従ってください:

    SQL> CREATE GLOBAL TEMPORARY TABLE tt_temptable(
      2        RowNums NUMBER(3,0) GENERATED ALWAYS AS IDENTITY,
      3        procNums  NUMBER(18,0)
      4    ) ON COMMIT PRESERVE ROWS;
    
    Table created
    
    SQL> 
    SQL> DECLARE
      2    inputString  VARCHAR2(50) := '12,13,14,15';
      3  BEGIN
      4      INSERT INTO tt_temptable(procNums)
      5         SELECT REGEXP_SUBSTR (inputString,'[^,]+',1,LEVEL) ProcNums
      6           FROM dual
      7        CONNECT BY  REGEXP_SUBSTR (inputString,'[^,]+',1,LEVEL) IS NOT NULL;
      8  END;
      9  /
    
    PL/SQL procedure successfully completed
    
    SQL> SELECT * FROM tt_temptable;
    
    ROWNUMS            PROCNUMS
    ------- -------------------
          1                  12
          2                  13
          3                  14
          4                  15
    

    IDENTITYをリセットするには 列(RowNums )、使用:

    SQL> ALTER TABLE tt_temptable MODIFY( RowNums Generated as Identity (START WITH 1));
    

    テーブルの共有ロックが解除されるたび。



    1. MySQLはcounterのような複数のユーザーによって同じ行を更新します

    2. Vagrant/Chef-soloでpostgresqlパスワードを設定する

    3. OracleのLPAD()関数

    4. mysqlでのorderby句のしくみ、順序付けは奇妙な動作を示します