简单问题:jdbc怎样得到存储过程的返回值?

hero 2001-08-06 11:20:01
存储过程:
CREATE PROCEDURE [test]
(@Name nvarchar(50))
AS
begin
insert into testTable(Name) values(@Name )
return @@IDENTITY
end
GO

得到返回值用什么?
...全文
101 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hero 2001-08-06
  • 打赏
  • 举报
回复
不错!简单,有效,给分!
只是,这是得到输出参数,不是得到返回值。
  • 打赏
  • 举报
回复
不改存储过程,调用方法改为:
CallableStatement cstmt = conn.prepareCall("{?=call test(?)}");
cstmt.registerOutParameter(1,java.sql.Types.INTEGER);
cstmt.setString(2, "Name");
cstmt.executeUpdate();
testTableID=cstmt.getInt(1);
  • 打赏
  • 举报
回复
我的做法是:
先修改一下存储过程:
CREATE PROCEDURE [test]
(@testTableID int OUTPUT,@Name nvarchar(50))
AS
begin
insert into testTable(Name) values(@Name )
select @testTableID=@@IDENTITY
end
GO


CallableStatement cstmt = conn.prepareCall("{call test(?,?)}");
cstmt.registerOutParameter(1,java.sql.Types.INTEGER);
cstmt.setString(2, "Name");
cstmt.executeUpdate();
testTableID=cstmt.getInt(1);

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧