Définition des objets Oracle

De EjnTricks
Révision de 13 juillet 2011 à 23:03 par Wikiadmin (discussion | contributions) (Remplacement du texte — « [[Catégorie: » par « [[Category: »)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

Utilisation des séquences

Cet exemple de création de séquence explique la création d'une séquence et son utilisation à travers une vue.

  • Création de la séquence.
CREATE SEQUENCE "SEQ_DOCUMENT_CHRONO" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOCYCLE

Cette requête entraîne la création d'une séquence | Commençant à 1. | Incrément de 1. | Pas de cache. A chaque requête sur la séquence, le numéro est calculé. Légère perte de performances, mais l'avantage est de s'assurer qu'il n'y a pas de trou. En effet, en utilisant le cache, le nombre de numéro est pré réservé. En cas d'arrêt et relance de la base, la séquence ne redémarra pas à la dernière valeur tirée. | Pas de cycle. Lorsque la valeur maximale est atteinte, il n'y a pas de rotation.


  • Création d' une séquence avec un cache de 20.
CREATE SEQUENCE "SEQ_DOCUMENT_CHRONO" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOCYCLE


  • Utilisation de la requête.

La séquence s'utilise par la requête suivante:

SELECT SEQ_DOCUMENT_CHRONO.NEXTVAL FROM DUAL


  • Création d'une fonction.

L'utilisation de la requête précédente ne fonctionne pas lors de la déclaration d'une vue. Il est donc nécessaire de passer par une fonction dont la syntaxe est la suivante:

CREATE OR REPLACE FUNCTION F_DOCUMENT_CHRONO 
RETURN NUMBER 
IS i_seqnumber NUMBER; 
BEGIN 
	SELECT SEQ_DOCUMENT_CHRONO.NEXTVAL INTO i_seqnumber FROM dual;  
RETURN i_seqnumber; 
END;/


  • Création de la vue.

La vue sur la fonction permet d'utiliser la séquence à la vue.

CREATE OR REPLACE FORCE VIEW V_DOCUMENT_CHRONO (nextdocid) AS SELECT F_DOCUMENT_CHRONO FROM dual