Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách chèn vào bảng tạm thời khi lặp qua một chuỗi - Oracle - PL / SQL

Nếu bạn sử dụng Oracle 12c , sau đó bạn có thể xác định IDENTITY cột qua GENERATED ALWAYS AS IDENTITY trong định nghĩa bảng của bạn và làm theo cách bên dưới:

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

Để đặt lại IDENTITY cột (RowNums ), sử dụng:

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

bất cứ khi nào các khóa dùng chung trên bảng được giải phóng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi khi cố gắng đổi tên các cột có khoảng trắng trong bảng oracle. Lỗi - Lỗi SQL:ORA- 00946:thiếu từ khóa TO

  2. Truy vấn SQL để trả về một hàng ngay cả khi không tìm thấy, với ít nhất là trong các tham số

  3. Chuyển đổi Oracle varchar2 sang nvarchar2

  4. Truy vấn sử dụng một câu lệnh trong cột VARCHAR2

  5. Hibernate Tạo tiêu chí để tham gia cùng một bảng hai lần - đã thử 2 cách tiếp cận với 2 lỗi khác biệt