这可能是一个愚蠢的问题,我尝试使用谷歌搜索,但我可能没有正确地说这个,所以我会尝试解释这个问题:
我正在使用SQL Server 2000,我有一个存储过程(SP1),它遍历一个包含3条记录的表,并在每次迭代时执行另一个存储过程(SP2)。
SP2执行插入操作,然后对插入的记录执行选择。
SP1在迭代后继续,它执行一次选择然后结束。
当我执行SP1时,我只希望返回最后一个select的结果集。但是通过这次迭代,我得到4个结果集(每个迭代1个,然后是最后的SP1选择)全部返回。
当我将它们作为SP1的一部分进行迭代时,是否有某种方式可以说don't return the resultset of SP2
?
我可以创建另一个与SP2完全相同的存储过程,但最后没有选择,可能会处理它。但我更喜欢向SP1添加一些东西,以防止返回结果集。这可能吗?
这是SP1中的迭代现在的样子:
set nocount on
declare c cursor for select room_id from st_room_ref where active = 1
declare @room_id int,
@max_c int
open c
while 1 = 1
begin
fetch c into @room_id
if @@fetch_status <> 0 break
select @max_c = max(call_id)
from st_call
where room_id = @room_id
if @max_c is null
exec st_getCall @room_id
end
close c
deallocate c
请不要论文关于游标的错误。只是希望某种方式告诉st_getCall
SP不要发送它的结果集。
答案 0 :(得分:1)
您是否尝试过以下操作?
INSERT INTO
@itteration_results
EXEC
st_getCall @room_id
这有限制;你不能把它嵌套得更深; st_getCall
内部不能有相同内容。
如果你最终需要这样做,你可能会从这个问题的接受答案中得到更多的抨击: