Jaki jest ekwiwalent PLSQL (Oracle) tego fragmentu kodu serwera SQL?PLSQL JDBC: Jak uzyskać identyfikator ostatniego rzędu?
BEGIN TRAN
INSERT INTO mytable(content) VALUES ("test") -- assume there's an ID column that is autoincrement
SELECT @@IDENTITY
COMMIT TRAN
W języku C#, można zadzwonić myCommand.ExecuteScalar(), aby pobrać identyfikator nowego wiersza.
Jak mogę wstawić nowy wiersz w Oracle i JDBC uzyskać kopię nowego identyfikatora?
EDYCJA: BalusC dostarczył bardzo dobry punkt wyjścia. Z jakiegoś powodu JDBC nie lubi powiązania nazwanego parametru. Daje to "Niepoprawnie ustawione lub zarejestrowane parametry" Wyjątek SQLException. Dlaczego to się dzieje?
OracleConnection conn = getAppConnection();
String q = "BEGIN INSERT INTO tb (id) values (claim_seq.nextval) returning id into :newId; end;" ;
CallableStatement cs = (OracleCallableStatement) conn.prepareCall(q);
cs.registerOutParameter("newId", OracleTypes.NUMBER);
cs.execute();
int newId = cs.getInt("newId");
Wybierz max polu id + 1? – Aren
@Aren - 'max (n) + 1' nie skaluje się i nie działa w środowisku wielu użytkowników. – APC