Я использую триггеры для установки значений столбцов PK всех таблиц, поэтому я не делаю никаких операций с идентификаторами в Java, но мне нужен идентификатор после вставки.
Как я могу получить ID?
stat.execute("INSERT INTO TPROJECT_PROCESS_GROUP(NPROJECT_ID,VDESCRIPTION) " +
"VALUES(" +
"'" + projectID + "'," +
"'" + description + "'" +
"");
Редактировать: Привет еще раз, я прочитал вопрос, теперь я получаю исключение, например «неподдерживаемая операция» (я перевел с моего родного языка, точная английская форма может отличаться). я думаю, что это о поддержке оракула для GetGeneratedKeys? Вы знаете что-нибудь об этом?
Решение. Как упоминалось в книге о вызываемых заявлениях, этот оператор может использоваться для выполнения хранимых процедур и функций. В отличие от PreparedStatement, большинство баз данных не выполняют никакой подготовки к вызову, потому что это такая простая команда. Экземпляры CallableStatement могут использоваться для возврата объекта, возвращенного хранимой процедурой, или, если быть более точным, функцией.
OracleConnection conn = null;
//OraclePreparedStatement pstat = null;
OracleCallableStatement cstat = null;
String sql = "BEGIN INSERT INTO TPROJECT P (VPROJECT_TITLE,VPROJECT_DESC) VALUES(?,?) RETURNING P.NPROJECT_ID INTO ?; END;";
try {
conn = ConnectionUtility.GetConnection();
cstat = (OracleCallableStatement)conn.prepareCall(sql);
cstat.setString(1, title);
cstat.setString(2, description);
cstat.registerOutParameter(3, OracleTypes.NUMBER);
cstat.execute();
int returnedID = cstat.getInt(3);
// System.out.println(returnedID);
conn.close();
return returnedID;