如何循环选择,调用存储过程并处理结果?

时间:2015-02-10 17:36:58

标签: sql-server stored-procedures

我有一个选择:

SELECT AnswerGridResponses,
       QuestionUId, 
       UserTestQuestionId
FROM   UserTest,
       UserTestQuestion
WHERE  UserTest.UserTestId = @UserTestId
AND    UserTest.UserTestId = UserTestQuestion.UserTestId

和我需要调用的程序:

EXEC sp_get_correct_responses @QuestionUId, @AnswerGridCorrect output

有人可以举例说明如何在存储过程中调用存储过程并传入@QuestionUId。在我传递之后我需要做更多的处理,但我想如果我知道如何循环那么这将给我所需要的一切。

1 个答案:

答案 0 :(得分:2)

使用Cursor执行此操作。

  DECLARE CUR CURSOR STATIC FOR
  SELECT DISTINCT QuestionUId
  FROM   UserTest 
  INNER JOIN  UserTestQuestion
  ON UserTest.UserTestId = UserTestQuestion.UserTestId
  WHERE  UserTest.UserTestId = @UserTestId


OPEN vendor_cursor

FETCH NEXT FROM CUR INTO @QuestionUId

WHILE @@FETCH_STATUS = 0
  BEGIN
      EXEC Sp_get_correct_responses
        @QuestionUId,
        @AnswerGridCorrect output

      FETCH NEXT FROM CUR INTO @QuestionUId
  END

CLOSE CUR;

DEALLOCATE CUR; 

注意:光标可能会导致性能下降。尝试将RBAR操作更改为基于设置的方法