Blogia
MeSeminary

Secuencias

El proveedor de datos .NET Framework para Oracle proporciona compatibilidad para recuperar los valores clave de secuencia de Oracle que genera el servidor después de realizar inserciones con OracleDataAdapter.

SQL Server y Oracle admiten la creación de columnas de incremento automático que pueden designarse como claves principales. Estos valores los genera el servidor cuando se agregan filas a una tabla. En SQL Server se establece la propiedad Identity de una columna; en Oracle se crea una secuencia. La diferencia entre las columnas de incremento automático de SQL Server y las secuencias de Oracle es la siguiente:

  • En SQL Server, marca una columna como columna de incremento automático y SQL Server genera de forma automática nuevos valores para la columna cuando se inserta una nueva fila.

  • En Oracle, para generar nuevos valores en una columna de la tabla crea una secuencia, pero no existe vínculo directo entre la secuencia y la tabla o la columna. Las secuencias de Oracle son objetos, de la misma forma que las tablas o los procedimientos almacenados.

Cuando crea una secuencia en una base de datos de Oracle, puede definir su valor inicial y el incremento entre los valores. También puede consultar si existen nuevos valores en la secuencia antes de enviar nuevas filas. Esto implica que el código puede reconocer los valores clave de las nuevas filas antes de insertarlas en la base de datos.

Secuencias

    ORACLE proporciona los objetos de secuencia para la generación de códigos numericos automáticos. 

    Las secuencias son una solución fácil y elegante al problema de los codigos autogenerados.

    LA sintaxis general es la siguiente:

 

 


CREATE SEQUENCE <secuence_name>
[MINVALUE <min_val>]
[MAXVALUE <max_val>]
[START WITH <ini_val>]
[INCREMENT BY <inc_val>]
[NOCACHE | CACHE <cache_val>]
[CYCLE]

[ORDER];

 

    El siguiente ejemplo crea una secuencia SQ_PRODUCTOS.

 


CREATE SEQUENCE SQ_PRODUCTOS
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;

 

    Se puede simplificar la orden, tomando los valores por defecto. El ejemplo anterior quedaría del siguiente modo:

 


CREATE SEQUENCE SQ_PRODUCTOS;

Para obtener el siguiente valor de una secuencia debemos utilizar la función NEXTVALNEXTVAL se puede utilizar el cualquier sentencia SQL DML (SELECTINSERTUPDATE).

 


SELECT SQ_PRODUCTOS.NEXTVAL
FROM DUAL;

 

    Podemos obtener el último valor generado por la secuencia con la función CURRVAL. Para poder ejecutar la función CURRVAL debemos haber ejecutado previamente la función NEXTVAL.

 


SELECT SQ_PRODUCTOS.CURRVAL
FROM DUAL;

 

    Para eliminar una secuencia definitivamente de la base de datos debemos utilizar la sentencia DROP.

 


DROP SEQUENCE
SQ_PRODUCTOS ;

 

 

0 comentarios