¿Cuál es el equivalente PLSQL (Oracle) de este fragmento de servidor SQL?PLSQL JDBC: ¿Cómo obtener la última fila de identificación?
BEGIN TRAN
INSERT INTO mytable(content) VALUES ("test") -- assume there's an ID column that is autoincrement
SELECT @@IDENTITY
COMMIT TRAN
En C#, puede llamar myCommand.ExecuteScalar() para recuperar el ID de la nueva fila.
¿Cómo puedo insertar una nueva fila en Oracle y hacer que JDBC obtenga una copia de la nueva identificación?
EDIT: BalusC proporciona un muy buen punto de partida. Por algún motivo, a JDBC no le gusta el enlace de los parámetros nombrados. Esto proporciona SQLException "Parámetros registrados o configurados incorrectamente". ¿Por qué está pasando esto?
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");
Seleccione el máximo del campo id + 1? – Aren
@Aren - 'max (n) + 1' no escala y no funciona en un entorno multiusuario. – APC