我的任务是编写一个基于另一个存储过程(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
保持在线状态?