小编Chr*_*dge的帖子

使用T-SQL通过游标导航存储过程的结果

由于遗留报告生成系统,我需要使用游标遍历存储过程的结果集.系统通过从结果集中的每一行打印数据来生成报告输出.重构报表系统超出了此问题的范围.

据我所知,DECLARE CURSOR语法要求其源是SELECT子句.但是,我需要使用的查询存在于生成并执行动态sql的1000多行存储过程中.

有谁知道从存储过程到游标的结果集的方法?

我试过了明显的事:

Declare Cursor c_Data For my_stored_proc @p1='foo', @p2='bar'
Run Code Online (Sandbox Code Playgroud)

作为最后的手段,我可​​以修改存储过程以返回它生成的动态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
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?有没有人知道通过游标从存储过程遍历结果集的任何其他方法?

谢谢.

t-sql stored-procedures cursor

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

cursor ×1

stored-procedures ×1

t-sql ×1