2015-05-22 78 views
-1

我有一个调用子进程的父进程,我需要从父进程中禁用此子进程的结果,因为我已经在父进程的父进程中使用它,因此我没有使用INSERT INTO EXEC。 有什么办法可以做到这一点?压缩存储过程的结果

例:

父程序:

CREATE TABLE #Table (Field INT,Field2 INT); 
EXEC [ChildProcedure]; 

子过程:

SELECT * FROM EXAMPLETABLE 
--OTHER OPERATIONS 
INSERT into #Table SELECT * from SOMETABLE 

的事情是,我的孩子过程有内,我不能避免选择。 当我从父母程序调用我的子程序时,我得到了选择结果,但我想压制它,因为我只想要INSERT INTO部分。

+0

也许你可以做一些与集NOEXEC上,还没有尝试过,但它可能工作 –

+0

你能证明你的程序? –

+0

@JamesZ事情是,我需要执行该子程序,但是会抑制任何选择结果。我需要从父级控制这种行为。谢谢。 –

回答

1

不,你不能抑制子SP的选择结果,而不INSERT EXEC

如果你可以改变你的分的SP,在末尾添加一个可选的参数,@SlientExit bit = 0

IF @SlientExit = 1 
    RETURN 
0

这是否儿童SP要做什么吗?例如:更新一些数据? 想想你可以尝试使用SET FMTONLY ON/OFF,但这会阻止SP运行; 例如:

CREATE PROCEDURE TEST_C 
AS 
SELECT 1 AS ID 
go 

CREATE PROCEDURE TEST_P 
AS 
SET FMTONLY ON 
EXEC TEST_C 
SET FMTONLY OFF 
SELECT 2 AS ID 
go 

EXEC TEST_P 
go 

或者可能在子SP中使用假状态; WHERE 1 = 2

+0

是的,它做了别的,所以我不能阻止整个执行。谢谢。 –