sql >> Database >  >> RDS >> Oracle

Oracle PL/SQL Release 12.2.0.1.0 vs 12.1.0.2.0 - onmiddellijk uitvoeren met parameters

Zoals vermeld door @Alex, is het maken van een reeks met Partition-clausule een ongedocumenteerde functie zoals WMCONCAT . Zie onderstaande uitleg:

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

Je kunt hier zien dat oracle intern de sequentiedefinitie opslaat in een partition en daarom wordt het weergegeven in DDL .

Maak nog een reeks

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

Je ziet nu dat Oracle deze keer een reeks in een of andere partitie heeft gemaakt en dat heeft laten zien in de DDL-definitie.

Sommige functies die Oracle had gereserveerd voor zijn eigen interne gebruik, worden daarom ongedocumenteerd gehouden.

In uw geval, als u dat deel verwijdert, werkt het andere deel prima. Zie hieronder:

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. ORA-06502:PL/SQL:numerieke of waardefout:tekenreeksbuffer te klein

  2. rails - postgres-fout:Reden:Incompatibele bibliotheekversie:libpq.5.dylib vereist versie 1.0.0 of hoger,

  3. Alle records selecteren met SQL LIMIT en OFFSET-query

  4. Java gebruiken om een ​​veilige verbinding tot stand te brengen met MySQL Amazon RDS (SSL/TLS)