一段oracle的存储过程调用语句,可供参考:CallableStatement call = conn.prepareCall(proc_sql);
call.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);call.execute();ResultSet rs = (ResultSet)call.getObject(1);
call.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);call.execute();ResultSet rs = (ResultSet)call.getObject(1);
这是要注册返回参数,sqlserver下有返回参数CURSOR类型的吗?
类似oracle.jdbc.OracleTypes.CURSOR
怎么写?搜了半天没有,用Types.OTHER也不行!不过,我这个问题主要是怎么得到存储过程的第三个返回结果集?继续求助啊!
http://community.csdn.net/expert/deeptree/RoomForum.asp?roomid=5704
楼主测试一下这样的调用:
exec page_proc 'select 总页数=3,总行数=22,当前页=1',1,10
--如果没有问题,再测试一下,把调用的表,改为查询用户表(不要查系统表,可能会是权限问题)
--如果还是有问题,则试试把存储过程修改为这样,看看第三个记录集是否可以得到结果:
CREATE procedure Page_proc
@sqlstr nvarchar(4000), --查询字符串
@currentpage int, --第N页
@pagesize int --每页行数
as
set nocount on
declare @P1 int, --P1是游标的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 总页数,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
--exec sp_cursorfetch @P1,16,@currentpage,@pagesize
select 总页数=3,总行数=22,当前页=1
exec sp_cursorclose @P1
set nocount off
GO