viernes, 11 de noviembre de 2016

NEXTVAL

La  pseudocolumna NEXTVAL devuelve el siguiente valor de secuencia disponible. Devuelve un valor único cada vez que se hace referencia al mismo, incluso para usuarios distintos.

NEXTVAL se debe emitir para esa secuencia antes de que CURRVAL contenga un valor. 

Después de crear la secuencia, ésta genera números secuenciales para su uso en las tablas. Haga referencia a los valores de secuencia mediante las pseudocolumnas NEXTVAL  y CURRVAL

La pseudocolumna NEXTVALse utiliza para extraer números de secuencia consecutivos de una secuencia especificada. Debe cualificar NEXTVAL con el nombre de secuencia. Al hacer referencia a sequence.NEXTVAL, se genera un nuevo número de secuencia y el número de secuencia actual se coloca en CURRVAL

La pseudocolumna CURRVAL se utiliza para hacer referencia a un número de secuencia que el usuario actual acaba de generar. Se debe utilizar NEXTVAL para generar un número de secuencia en la sesión del usuario actual antes de que se pueda hacer referencia a CURRVAL. Debe cualificar CURRVAL con el nombre de secuencia. Al hacer referencia a sequence.CURRVAL, se muestra el último valor devuelto al proceso de ese usuario. 

Reglas para Utilizar NEXTVAL y CURRVAL 

Puede utilizar NEXTVAL y CURRVAL en los siguientes contextos: 
  • Lista SELECT de una sentencia SELECT que no forma parte de una subconsulta 
  • Lista SELECT de una subconsulta en una sentencia INSERT 
  • Cláusula VALUES de una sentencia INSERT 
  • Cláusula SET de una sentencia UPDATE 
No puede utilizar NEXTVAL y CURRVAL en los siguientes contextos: 
  • Lista SELECT de una vista 
  • Sentencia SELECT con la palabra clave DISTINCT 
  • Sentencia SELECT con las cláusulas GROUP BY, HAVING u ORDER BY 
  • Subconsulta en una sentencia SELECT, DELETE o UPDATE 
  • Expresión DEFAULT en una sentencia CREATE TABLE o ALTER TABLE 
Para obtener más información, consulte “Pseudocolumns” y “CREATE SEQUENCE” en Oracle SQL Reference. 

Ejemplo:

Inserte un nuevo departamento denominado “Support” en el identificador de ubicación 2500:

INSERT INTO departments(department_id,department_name, location_id)
VALUES   (dept_deptid_seq.NEXTVAL,  'Support', 2500);

Vea el valor actual en la secuencia DEPT_DEPTID_SEQ: 

SELECT dept_deptid_seq.CURRVAL 
FROM  dual; 

Supongamos que desea contratar empleados para el nuevo departamento. La sentencia INSERT que se debe ejecutar para todos los nuevos empleados puede incluir el siguiente código: 
INSERT INTO employees (employee_id, department_id, ...) 
VALUES (employees_seq.NEXTVALdept_deptid_seq .CURRVAL, ...); 

Nota: El ejemplo anterior supone que ya se ha creado una secuencia denominada EMPLOYEE_SEQ para generar nuevos números de empleado. 
Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?