Ну, как говорили другие, вы не можете сделать это в одном заявлении. (это как раз то, как все работает)
Если вы не хотите называть proc с результатами, вы можете сначала выбрать, а затем вызвать proc с помощью курсора. Курсор будет выполнять код строки за строкой, и вы сможете вызвать proc, передавая правильные значения. Но будьте осторожны, что курсоры используются медленно, например, FAST_FORWARD.
Другим способом было бы изменить ваш процесс, чтобы принять целую таблицу в качестве параметра таблицы, если это возможно, что будет работать лучше.
Надеюсь, это поможет.
DECLARE CallingProcCursor CURSOR
FAST_FORWARD
FOR
SELECT database_id,name from sys.databases
DECLARE @database_id int, @name sysname
OPEN CallingProcCursor
FETCH NEXT FROM CallingProcCursor INTO @database_id, @name
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
EXEC PROCX @database_id, @name
END
FETCH NEXT FROM CallingProcCursor INTO @database_id, @name
END
CLOSE CallingProcCursor
DEALLOCATE CallingProcCursor
GO
Отзывы ответили вам? если ответы на них предоставлены, ответили на ваш вопрос, пожалуйста, отметьте один как ответ. –