【发布时间】:2013-08-05 11:39:27
【问题描述】:
我有这个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表中的数据更新了。
【问题讨论】:
标签: java stored-procedures jdbc callable-statement jaybird