Количество строк, затронутых обновлением SQL, можно вернуть с помощью SQL% ROWCOUNT (для ORACLE) или @@ ROWCOUNT (для SQL SERVER)
Примечание. Чтобы вернуть количество обновленных, удаленных и т. Д. Строк, мы должны использовать параметр OUT в хранимой процедуре, который будет хранить количество обновленных, удаленных и т. Д. Строк.
Чтобы получить количество обновленных, удаленных и т. Д. Строк, мы должны использовать
Метод registerOutParameter в Java
Для сохранения количества обновленных или удаленных строк и т. Д. В одну из
Параметр OUT в хранимой процедуре, мы должны установить тип этого
параметр в нашем скрипте перед выполнением команды. (В случае
Обновите или удалите это будет ЧИСЛО)
После выполнения команды сохраните значение обновленного или удаленного
строки в переменную (это может быть новая переменная или переменные
доступны в классе и т. д.), вызывая индекс этого параметра
(например: A = cs.getInt (3), если параметр OUT в хранимой процедуре
2-й параметр)
Теперь переменная имеет значение обновленных или удаленных строк.
(I.e.A = 10)
Пример для хранимой порции
Function demo( A varchar2(10), B OUT NUMBER)RETURN NUMBER IS EXIST_LP NUMBER;
BEGIN
UPDATE demo_temp SET name=A where name="ABC";
B:=SQL%ROWCOUNT -- total number of rows updated
RETRUN EXIST_LP;
END demo;
Пример для сценария Java
public void update(demo demo){
int rowCount = 0;
Connection conn = null;
CallableStatement cs = null;
try{
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("your data source path");
conn = ds.getConnection();
cs = conn.prepareCall("BEGIN ? :=demo_dbp.demo(?,?) ); END;"); // stored proc
cs.registerOutParameter(1, Types.INTEGER);
cs.setString(2, "XYZ");
cs.registerOutParameter(3, Types.NUMERIC);
rowCount=cs.execcuteUpdate();
demo.setUpdateCount(cs.getInt(3));
} catch (SQLException exc) {
throw new DaoException("An SQL Exception has occurred.", exc);
} catch (NamingException ne) {
throw new DaoException("A Naming Exception has occurred.", ne);
} catch (Exception e) {
throw new DaoException("An Exception has occurred", e);
} finally {
try {
if (cs != null) {
cs.close();
}
} catch (SQLException ex1) {
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
}
}
}
Примечание: executeUpdate () не возвращает количество обновленных или удаленных строк. Он просто возвращает 0 или 1.
- 0 - Ошибка выполнения
- 1 - Успешное выполнение