【发布时间】:2014-08-17 05:05:41
【问题描述】:
我有两个存储过程如下:
create stored procedure p1
as
select * from table1 where datediff(day, table1.[date], getdate())
create stored procedure p2
as
declare @t1 table(
ref varchar(20)
)
insert into @t1 select * from table1 where ref = 'some ref'
declare @t2 table(
fname varchar(20),
lname varchar(20),
email varchar(1000)
)
declare @len int = (select count(ref) from @t1)
while @len > 0
begin
declare @value varchar(20) = (select top 1 ref from @t1)
insert into @t2 select * from table2 where ref = @ref
delete from @t1
where ref = @value
set @len = (select count(ref) from @t1)
end
select * from @t2
Java 代码
....
String query = "Execute [p2]";
try(CallableStatement cstmt = conn.prepareCall(query);
ResultSet rs = cstmt.executeQuery()){
... some code
}
表变量@t1 保存来自表'table1'的选择结果
变量@len 保存@t1 中的行数
在while循环中使用@len > 0作为条件,我想从另一个表'table2'中选择记录,表变量@t2保存来自'table2'的选择记录
delete 语句从@t1 中删除值 @len 设置为 @t1 中的新行数 最后一条语句返回@t2中存储的所有记录
第一个过程可以正常工作,但第二个过程只能在 SQL Server 中工作。
我在我的 java 应用程序中收到一条错误消息
语句没有返回结果集
我希望它返回一个带有我在 查询结束。
请问有办法解决吗?
【问题讨论】:
标签: sql-server stored-procedures jdbc