Création d’une séquence Oracle

Une séquence est un compteur programmable stocké en mémoire par Oracle et utilisable de manière partagé. Objet de la base de données Oracle, au même titre qu'une table ou une vue, il appartient à un utilisateur donné : on peut le manipuler, le modifier, à condition d'avoir les droits nécessaires.

L’utilisation d’une séquence Oracle permet de rechercher un numéro sans poser de verrou sur une table alors que l’utilisation des compteurs habituels s’effectue dans le cadre d’une transaction susceptible de verrouiller momentanément la table.

Le numéro recherché par séquence Oracle est en effet incrémenté que la transaction en cours se termine par un « commit » ou qu’elle se termine par un « rollback ».

Définir une séquence équivaut à définir une suite de nombres entiers dont l’évolution est pilotée par un certain nombre de critères. En effet, cette possibilité permet par exemple de générer des clés uniques dans des tables ou encore de disposer d’un compteur à titre informatif, que l'on incrémente à loisir.

Généralités

Paramétrage

Certains paramètres d’ACE permettent d’utiliser les séquences Oracle à la place de la numérotation intégrée au logiciel.

Paramètre Fonctionnalité
LOGSEQ

Optimiser la génération des mouvements de stock dans le module Logistique en utilisant les séquences de numérotation du SGBD ORACLE.

SEQORA Lors de la numérotation des nouveaux événements (table EVE, champ « numeve »), des nouveaux tiers (table TIE, champ « sigtie »), de l’édition à la demande ou de la mise en panier, rechercher le prochain numéro non pas via les compteurs habituels (table UT_CPT et TROU), mais via une séquence Oracle.

Fonctionnalités

Principes

Créer une séquence

create sequence nom_seq start with no_debut

increment by saut

maxvalue valeur_max cycle|nocycle cache|nocache

Utiliser une séquence

La valeur courante de la séquence est donnée par « nom_seq.currval » et la suivante par « nom_seq.nextval ».

Exemple

SQL> create sequence seq_no_cli

start with 1000 increment by 100;

SQL> insert into clients (no, nom) values (seq_no_cli.nextval, 'Deconninck');

Sous forme d’un ordre SQL

Voici le script de création d'une séquence

CREATE SEQUENCE SOC3.SEQ_SEQORA

START WITH 1

MAXVALUE 999999999999999999999999999

MINVALUE 1

CYCLE

CACHE 20

Le paramètre “CACHE” permet de mettre les valeurs Spécifiées en mémoire cache et d’améliorer les performances. Par défaut, Oracle maintient 20 valeurs en mémoire cache.

Avec SQL Developper

Notre exemple est illustré avec SQL Developper mais il vous est possible d’utiliser n’importe quel autre éditeur qui offre les mêmes possibilités.