Oracle
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на изрази WITH и UPDATE в една и съща SQL заявка

  2. ORA-01735:невалидна опция ALTER TABLE - жаба

  3. Не е грешка в израза GROUP BY

  4. текстово търсене на Oracle blob

  5. Какъв е смисълът на ORM, ако трябва да дефинирам всяко поле в app.config за Oracle .net Entity Framework