JDB C executeUpdate () и getUpdateCount () должны возвращать номер затронутой строки. Следующий код java вызывает хранимую процедуру MySql, а переменной «r c» присваивается значение «1», что означает, что была вставлена 1 строка:
CallableStatement stmt = conn.prepareCall("{call insertData(?)}");
stmt.setInt(1, i);
int rc = stmt.executeUpdate(); // returns 1
rc = stmt.getUpdateCount(); // returns 1
вызывается хранимая процедура MySql:
CREATE PROCEDURE insertData(IN i INT)
BEGIN
INSERT INTO table_name(column_name) VALUES(i);
END //
Все работает как положено. Теперь нужно, чтобы аналогичный код Java работал с функцией или процедурой PostgreSql и заставлял executeUpdate () или getUpdateCount () действовать так же и возвращать затронутую строку. Новая строка вставляется в таблицу Postgresql, но executeUpdate () или getUpdateCount () всегда возвращают 0.
create procedure insertData(i integer) as $$
begin
INSERT INTO table_name(column_name) VALUES(i);
end; $$ language plpgsql;
Как заставить executeUpdate () или getUpdateCount () возвращать затронутую строку при вызове Postgresql функция или процедура?