这可能是一个愚蠢的问题,我尝试过谷歌搜索,但我可能没有正确表达这个问题,所以我将尝试在这里解释这个问题:
我正在使用 SQL Server 2000,并且我有一个存储过程 (SP1),它遍历具有 3 条记录的表并在每次迭代时执行另一个存储过程 (SP2)。
SP2 进行插入,然后对插入的记录进行选择。
SP1 在迭代后继续,它执行一次选择然后结束。
当我执行 SP1 时,我只希望返回最后一次选择的结果集。但是通过这次迭代,我得到了 4 个结果集(每次迭代 1 个,然后是最后的 SP1 选择)全部返回。
don't return the resultset of SP2
当我将它们作为 SP1 的一部分进行迭代时,有什么办法可以说?
我可以创建另一个与 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 不要将其结果集发回。