2015-05-22 4 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

Нет, вы не можете подавить результат SELECT под-SP без INSERT EXEC.

Если вы можете изменить свой суб-ПЛов, добавить дополнительный параметр в конце @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

Да, он делает что-то еще, поэтому я не могу предотвратить все исполнение. Спасибо. –

Смежные вопросы