Jestem nowy w używaniu Oracle, więc wychodzę z tego, co już zostało wcześniej odebrane w this SO question. Po prostu nie mogę tego zmusić do działania. Oto oświadczenie, że używam:Pobierz ostatni identyfikator wstawki z Oracle 11g, używając 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;
Kiedy zadzwonić executeQuery
PreparedStatement że zrobiłem, to wkłada wszystko do bazy danych po prostu grzywny. Jednak nie mogę wymyślić, jak pobrać identyfikator. Zwrócony obiekt ResultSet nie będzie dla mnie działał. Wywołanie
if(resultSet.next()) ...
daje paskudny SQLException, który brzmi:
Nie można wykonać sprowadzić na oświadczenia PLSQL: Następna
Jak mogę dostać że lastId
? Oczywiście robię to źle.
Zawsze możesz zapytać 'SELECT FOO_ID_SEQ.CURRVAL FROM DUAL'. – Phil
Opublikuj funkcję lub procedurę przechowywaną - musisz wiedzieć, czy ustawiłeś 'lastid' jako parametr INOUT. –
jeśli muszę wykonać inne zapytanie, nie mam gwarancji, że jest to identyfikator elementu, który właśnie wstawiłem. może tam być inne zapytanie. – geowa4