我有一个存储过程,我想从另一个存储过程中调用它,然后循环访问结果。有点像在存储过程中使用游标而不是 SQL select 语句。我不太明白该怎么做。
我可以得到这样的整个结果:
DECLARE @result int;
EXEC @result = sp_who;
PRINT @result;
有趣的是,这似乎将 @result 的类型更改为 int 以外的类型,但无论如何。然后我如何逐行循环结果?如何访问各个列中的数据?例如,我如何终止第四列(登录名)类似于“%gatesb”或其他内容的进程?
最佳答案
您可以声明一个表变量来保存存储过程的结果,然后在 while 循环中循环遍历它们:
declare @temp table (
idx int identity(1,1),
field1 int,
field2 varchar(max))
declare @result int
insert into @temp (field1, field2)
exec @result = sp_who
declare @counter int
set @counter = 1
while @counter < (select max(idx) from @temp)
begin
-- do what you want with the rows here
set @counter = @counter + 1
end
关于sql - 如何在另一个存储过程中使用存储过程的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/861187/