2011-04-20 17 views
8

Me gustaría utilizar el soporte de SECUENCIA en Apache Derby 10.7. He creado la secuencia con la siguiente afirmación:¿Cómo usar SEQUENCE en Apache Derby?

CREATE SEQUENCE SAMPLE_SEQ AS INT MAXVALUE 999999 CYCLE; 

¿Cómo puedo seleccionar el siguiente valor de la corriente/de la SAMPLE_SEQ? ¿Podría ayudarme con la consulta?

Respuesta

8

Apache Derby Doc dice: Use a NEXT VALUE FOR expression

debe ser algo como

SELECT NEXT VALUE FOR SAMPLE_SEQ; 
+9

Derby se queja de la consulta que ha sugerido. No le gusta el final prematuro de la consulta (EOF). Lo que funciona para mí es 'VALORES PRÓXIMO VALOR PARA SAMPLE_SEQ' –

+0

@pregzt - esa era mi preocupación - No encontré un ejemplo de trabajo para una consulta para obtener un valor único de una secuencia - el fragmento fue utilizado * dentro * más consulta compleja ... –

1

Para obtener el valor actual de la secuencia en la que se debe ejecutar el siguiente SQL:

SELECT CURRENTVALUE FROM SYS.SYSSEQUENCES WHERE SEQUENCENAME='SAMPLE_SEQ' 
+0

Ese no es el valor actual. –

0

En la línea de comandos SQL, puede consultar el siguiente valor con esta declaración:

values NEXT VALUE FOR <sequence_name> 

Esto funcionará como una expresión incrustada en una instrucción INSERT. Por ejemplo:

INSERT INTO <table_name> (IDFIELD) VALUES (NEXT VALUE FOR <sequence_name>) 
0

En caso de que desee buscar el 'valor actual' de la 'secuencia':

  • valores (valor siguiente para < secuencia>)

mismo en Java utilizando JDBC:

ResultSet rs = conn.prepareStatement("values (next value for <sequence>)").executeQuery(); 
rs.next(); 
int seqValue = rs.getInt(1); 

Fuente: Derby-user-mailing list archive