动态INSERT INTO ... EXEC可用吗?

时间:2017-11-24 09:44:20

标签: sql-server sql-server-2008

我的任务是编写一个基于另一个存储过程(sp2)返回结果的存储过程(sp1)。逻辑一致性是绝对严格的,因此我的解决方案是在INSERT INTO ... EXEC中使用sp2来制定权宜之计。

代码如下所示:

CREATE PROCEDURE dbo.sp2
AS
BEGIN
    CREATE TABLE #t(column1 int, column2 int)

    INSERT INTO #t
        EXEC dbo.sp1

    --- then do many things
END

---- Existing stored procedure "sp1"
--ALTER PROCEDURE dbo.sp1
--AS
--BEGIN
   -- do many things
   --SELECT <something> as column1, <something2> as column2
   --FROM ...
--END

当输出sp1的结构发生变化时,即使只添加一列,问题就会出现;当发生这种情况时,sp2肯定会失效,如果相关的测试不可用,sp1修饰符就很难意识到这一点。

如果我们知道sp1只会添加输出而不是减少或修改现有输出,即使sp2被修改,有没有办法让sp1保持在线状态?

1 个答案:

答案 0 :(得分:1)

您可以使用OPENROWSET

这是tutorial,以您正在寻找的方式显示其用途