sql >> Databáze >  >> RDS >> Oracle

Oracle PL/SQL Release 12.2.0.1.0 vs 12.1.0.2.0 – okamžité spuštění s parametry

Jak zmínil @Alex, vytvoření sekvence s klauzulí Partition je nezdokumentovaná funkce, jako je WMCONCAT . Viz vysvětlení níže:

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

Zde můžete vidět, že oracle interně ukládá definici sekvence do nějaké partition a proto se zobrazuje v DDL .

Vytvořte další sekvenci

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

Nyní vidíte, že tentokrát Oracle vytvořil sekvenci v nějakém oddílu, a proto to ukázal v definici DDL.

Některé funkce, které si Oracle vyhradil pro své vlastní interní použití, jsou proto ponechány nezdokumentované.

Ve vašem případě, pokud tuto část odstraníte, bude druhá část fungovat dobře. Viz níže:

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. MySQL Long Query Progress Monitoring

  2. Chyba PDO:Neplatné číslo parametru:parametr nebyl definován

  3. Duplikování tabulky v MYSQL bez kopírování jednoho řádku po druhém

  4. V dotazu na regulární výraz MySQL se nerozlišují velká a malá písmena