Information and communication technology me.think.toString("blog");
Restart Oracle Sequence from Stored Procedure
Può capitare di dover azzerare una sequence in maniera dinamica direttamente da una stored procedure.
Vi propongo una delle possibili soluzioni premettendo ai puristi di Oracle che esistono sicuramente soluzioni migliori.
?Mostra codice PLSQL
1 2 3 4 5 6 7 8 | -- Quando decidiamo di restartare la sequence SELECT 0 - MY_SEQ.NEXTVAL INTO nCURR FROM dual; EXECUTE IMMEDIATE ('alter sequence MY_SEQ increment by ' || nCURR); SELECT MY_SEQ.NEXTVAL INTO nCURR FROM dual; EXECUTE immediate ('alter sequence MY_SEQ increment by 1'); |
In una variabile di tipo NUMBER, precedentemente dichiarata, salviamo il NEXTVAL della sequence in valore negativo. Modifichiamo ora la sequence con un increment by del valore appena salvato. Ora richiamando per la prima volta la sequence, essa stessa partirà da zero, perchè il suo nextval sara uguale a n – n.
Non resta che modificarla nuovamente reimpostando un increment by 1.
| Stampa l'articolo | Questo articolo è stato pubblicato da antferr il gennaio 12, 2010 alle 1:30 pm, ed è archiviato come Oracle. Puoi seguire i commenti a questo post attraverso RSS 2.0. Puoi pubblicare un commento o segnalare un trackback dal tuo sito. |

