PLSQL (Oracle) tương đương với đoạn mã máy chủ SQL này là gì?PLSQL JDBC: Cách nhận ID hàng cuối cùng?
BEGIN TRAN
INSERT INTO mytable(content) VALUES ("test") -- assume there's an ID column that is autoincrement
SELECT @@IDENTITY
COMMIT TRAN
Trong C#, bạn có thể gọi myCommand.ExecuteScalar() để truy xuất ID của hàng mới.
Làm cách nào để chèn một hàng mới trong Oracle và có JDBC lấy bản sao của id mới?
EDIT: BalusC cung cấp điểm khởi đầu rất tốt. Vì một số lý do JDBC không thích ràng buộc tham số có tên. Điều này cho biết "SQLException" được thiết lập hoặc đăng ký không chính xác. Tại sao chuyện này đang xảy ra?
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");
Chọn tối đa của các trường id + 1? – Aren
@Aren - 'max (n) + 1' không mở rộng và không hoạt động trong môi trường nhiều người dùng. – APC