Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle PL/SQL Release 12.2.0.1.0 vs 12.1.0.2.0 - wykonanie natychmiastowe z parametrami

Jak wspomniał @Alex, tworzenie sekwencji z klauzulą ​​Partition jest nieudokumentowaną funkcją, taką jak WMCONCAT . Zobacz wyjaśnienie poniżej:

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

Widać tutaj, że Oracle wewnętrznie zapisuje definicję sekwencji w jakiejś partition i dlatego pokazuje się w DDL .

Utwórz kolejną sekwencję

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

Widzisz teraz, że tym razem Oracle utworzyło sekwencję w jakiejś partycji, a tym samym pokazało to w definicji DDL.

Niektóre funkcje, które firma Oracle zarezerwowała do własnego użytku wewnętrznego, są zatem nieudokumentowane.

W twoim przypadku, jeśli usuniesz tę część, inna część będzie działać dobrze. Zobacz poniżej:

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. JDBC :pobierz typ tablicy z metadanych

  2. Oracle:dynamiczne zapytanie z klauzulą ​​IN za pomocą kursora

  3. Jak obsługiwać wartości null w instrukcjach NOT IN i NOT LIKE w Oracle?

  4. Przeanalizuj json przez json_table w Oracle 18

  5. Odświeżanie / aktualizowanie ekranu formularza w Oracle D2k Forms 6i