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