由于遗留报告生成系统,我需要使用游标遍历结果从一个存储过程中设置。 该系统通过从结果集中的每一行的印刷数据来生成报告输出。 重构报告制度是远远超出范围了这个问题。
据我所知道的,DECLARE CURSOR语法要求其源是一个SELECT子句。 但是,查询我需要生成并执行动态sql了1000多个线存储过程使用的生活。
有谁知道的一种方式来获得结果从一个存储过程中设置成光标?
我尝试了很明显的:
Declare Cursor c_Data For my_stored_proc @p1='foo', @p2='bar'
作为最后的手段,我可以修改存储过程返回它生成的,而不是执行它的动态SQL,然后我可以嵌入这个返回的SQL到另一个字符串中和,最后,执行。 就像是:
Exec my_stored_proc @p1='foo', @p2='bar', @query='' OUTPUT
Set @sql = '
Declare Cursor c_Data For ' + @query + '
Open c_Data
-- etc. - cursor processing loop etc. goes here '
Exec @sql
有什么想法吗? 有谁知道任何其他方式来遍历结果通过光标从一个存储过程设置?
谢谢。