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

Oracle PL / SQL Release 12.2.0.1.0 so với 12.1.0.2.0 - thực thi ngay lập tức với các tham số

Như đã đề cập bởi @Alex, tạo một chuỗi với mệnh đề Phân vùng là tính năng không có tài liệu như WMCONCAT . Xem phần giải thích bên dưới:

sql> create sequence s1;

Sequence created.

sql> select s1.nextval from dual;

     NEXTVAL
     ---------
     1

sql> select dbms_metadata.get_ddl('SEQUENCE','S1') from dual;

DBMS_METADATA.GET_DDL('SEQUENCE','S1')
--------------------------------------------------------------------------------

 CREATE SEQUENCE  "SCOTT"."S1"  MINVALUE 1 MAXVALUE 99999999999999999999999999
99 INCREMENT BY 1 START WITH 21 CACHE 20 NOORDER  NOCYCLE  NOPARTITION

Bạn có thể thấy ở đây rằng oracle nội bộ lưu định nghĩa trình tự trong một số partition và do đó nó hiển thị trong DDL .

Tạo một chuỗi khác

sql> create sequence s2 partition;

  Sequence created.

sql> select s2.nextval from dual;

     NEXTVAL
---------------
      4103920000000000000000000000000001

sql> select dbms_metadata.get_ddl('SEQUENCE','S2') from dual;

DBMS_METADATA.GET_DDL('SEQUENCE','S2')
--------------------------------------------------------------------------------

 CREATE SEQUENCE  "SCOTT"."S2"  MINVALUE 1 MAXVALUE 99999999999999999999999999
99 INCREMENT BY 1 START WITH 21 CACHE 20 NOORDER  NOCYCLE  PARTITION 100000000

Bây giờ bạn thấy lần này Oracle đã tạo trình tự trong một số partiton và do đó hiển thị điều đó trong DDL definiton.

Một số tính năng mà oracle đã dành riêng cho việc sử dụng nội bộ của chính nó, do đó được giữ không có tài liệu.

Trong trường hợp của bạn nếu bạn loại bỏ phần đó thì phần khác sẽ hoạt động tốt. Xem bên dưới:

DECLARE
  max_id INTEGER;
BEGIN
  SELECT MAX(ID) + 1 INTO max_id FROM MY_TABLE;

  EXECUTE IMMEDIATE 'CREATE SEQUENCE  MY_TABLE_ID  MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH '|| max_id||'  CACHE 100 NOORDER  NOCYCLE  ' ;
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Phát hiện lỗi sqlplus trong tập lệnh hàng loạt dos?

  2. PL SQL:Cách hiển thị nano giây của TIMESTAMP

  3. Chuyển đổi chữ số / số bằng từ sang tiền tệ INR (Rupee Ấn Độ) trong Oracle PL / SQL

  4. Chúng ta có cần chỉ định không null cho khóa chính không? Oracle / SQL

  5. Toán tử tham gia Oracle