取消存储过程结果

时间:2015-05-22 07:55:28

标签: sql sql-server

我有一个父进程调用子进程,我需要从父进程 WITHOUT USE 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部分。

2 个答案:

答案 0 :(得分:1)

不,如果没有INSERT EXEC,则无法抑制子SP的SELECT结果。

如果您可以更改子SP,请在末尾添加可选参数@SlientExit bit = 0

IF @SlientExit = 1
  RETURN

答案 1 :(得分:0)

这个Child 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中使用假病情;在哪里1 = 2