SQL INSERT @tableVar SELECT ... это только вставить - PullRequest
0 голосов
/ 30 июня 2011

Мне нужно заполнить набор данных значениями из нескольких таблиц.

Я создал stored procedure, который выполняет несколько SELECT операторов.

Каждый SELECT имеет общие части.

Я решил кешировать результаты этих общих частей.

Теперь мне нужна конструкция SELECT, которая способна выводить результаты в табличную переменную.

INSERT @tableVar SELECT ... только вставляет данные, но не выбирает их.

Мое намерение - что-то вроде SELECT * OUTPUT SELECTED.* INTO @tableVar FROM ...

Можно ли выполнить такую ​​операцию?

Ответы [ 2 ]

3 голосов
/ 30 июня 2011
INSERT @tableVar 
  OUTPUT INSERTED.* 
  SELECT * 
  FROM [...]
0 голосов
/ 30 июня 2011

Вы можете сделать выбор после первой вставки:

INSERT @probes
SELECT P.ID, P.ContainerID, P.EstimateID
FROM Probes AS P
WHERE P.LockedBy = @lockedBy

SELECT * FROM @probes

SELECT C.ID, C.Data
FROM Containers AS C
INNER JOIN
(
    SELECT DISTINCT P.ContainerID
    FROM @probes AS P
) AS X ON C.ID = X.ContainerID

SELECT E.ID, E.ObjectiveID, E.[Time]
FROM Estimates AS E
INNER JOIN
(
    SELECT DISTINCT P.EstimateID
    FROM @probes AS P
) AS X ON X.EstimateID = E.ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...