У меня есть этот код Java
:
Connection conn = connectionProvider.getConnection();
statement = conn.prepareCall("execute procedure rm_set_coordinates(?,?,?)");
statement.setInt(1, userId);
statement.setString(2, String.valueOf(location.getLatitude()));
statement.setString(3, String.valueOf(location.getLongitude()));
statement.execute();
Где rm_set_coordinates
— это Firebird
хранимая процедура:
create or alter procedure RM_SET_COORDINATES (
PCAR_LOGIN integer,
PLAT varchar(20) = 0,
PLNG varchar(20) = 0)
returns (
ORESULT integer,
ORESULT_MSG varchar(500))
as
begin
update ref_car rc set rc.rm_last_connect_time='now',rc.rm_lat=:plat,rc.rm_lng=:PLNG where rc.id=:pcar_login;
oresult=1;
oresult_msg='';
suspend;
end
Когда я выполняю этот код, данные в таблице ref_car
не меняются. Но если я добавлю эту строку в приведенный выше код:
statement.getInt(1);
который возвращает значение выходного параметра oresult
, тогда все в порядке, данные в таблице ref_car
обновляются.