Soy nuevo en el uso de Oracle, por lo que estoy saliendo de lo que ya se ha respondido previamente en this SO question. Parece que no puedo hacer que funcione. Aquí está la declaración que estoy usando:Obtiene la última identificación de inserción con Oracle 11g usando JDBC
declare
lastId number;
begin
INSERT INTO "DB_OWNER"."FOO"
(ID, DEPARTMENT, BUSINESS)
VALUES (FOO_ID_SEQ.NEXTVAL, 'Database Management', 'Oracle')
RETURNING ID INTO lastId;
end;
Cuando llamo executeQuery
PreparedStatement que he hecho, todo lo que se inserta en la base de datos muy bien. Sin embargo, parece que no puedo encontrar la manera de recuperar la ID. El objeto ResultSet devuelto no funcionará para mí. Llamando
if(resultSet.next()) ...
produce una excepción de SQL desagradable que lee:
No se puede realizar traeré en un comunicado PLSQL: junto
¿Cómo consigo que lastId
? Obviamente lo estoy haciendo mal.
Siempre se puede consultar 'SELECCIONAR FOO_ID_SEQ.CURRVAL FROM DUAL'. – Phil
Publique la función o el procedimiento almacenado; necesita saber si establece 'lastid' como un parámetro INOUT. –
si tengo que ejecutar otra consulta, no estoy seguro de que sea la identificación del elemento que acabo de insertar. podría haber otra consulta que se coló allí. – geowa4