当前位置:  开发笔记 > 数据库 > 正文

如何从存储过程中抑制存储过程的结果?

如何解决《如何从存储过程中抑制存储过程的结果?》经验,为你挑选了1个好方法。

我有一个存储过程(我们称之为A)调用另一个存储过程(我们称之为B).B包括一个我不想发回给A的调用者的SELECT.

这是一些非常粗糙的伪代码,但它应该得到了这个想法.

PROCEDURE A
    CURSOR
        CALL B -- I WANT TO SUPPRESS THE RESULTS FROM B
    END
    SELECT *
END
PROCEDURE B
    Do some interesting things
    SELECT *
END

如上所述,A调用B和B执行我想要的一些操作并返回我不关心的结果.A完成后,返回自己的一组结果.

如何抑制A中B的结果?我正在使用SQL Server 2005.我宁愿不对B进行更改,因为它工作起来比我想要的更复杂.



1> JoshBerke..:

你可以尝试这样的事情:

/* Assume this table matches the output of your procedure */
DECLARE @tmpNewValue TABLE (newvalue int)
INSERT INTO @tmpNewValue 
EXEC ProcedureB


这种方法的问题是你只能嵌套`insert into exec`.因此,如果您在父级中使用相同的方法,事情就会崩溃.
这是一个很好的解决方案.但它仍然会导致开销,不是吗?我认为应该有一个像`SET NORESULTSETS ON'这样的选项.我几乎总是称SP为副作用,我对它的输出不感兴趣.
推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有