SQL: использование INSERT в инструкции SELECT - PullRequest
1 голос
/ 09 июля 2009

У меня есть оператор SQL SELECT, который создает результаты в формате XML. Я хотел бы вставлять в другую таблицу (журнал через вставку) каждый раз, когда строка выбирается из исходного оператора SELECT. Есть ли способ включить оператор INSERT в оператор SELECT?

    SELECT      cs_ads_StoreLocations.LocationGUID, *Bunch of Selects AS Distance 
FROM         *Bunch of Inter Joins*

WHERE     *Bunch of conditions*
ORDER BY *You don't want to know*
FOR XML AUTO

INSERT INTO cs_ads_StoreLog (LocationGUID) VALUES (*DISTINCT cs_ads_StoreLocations.LocationGUID from select statement above*)

Это просто некоторый пример кода, который имеет INSERT вне оператора SELECT. Мне нужно что-то, что есть внутри инструкции SELECT, или другой способ запуска INSERT

Просто чтобы уточнить. Этот пример кода является частью сохраненного процесса

Ответы [ 2 ]

1 голос
/ 09 июля 2009

INSERT фактически примет SELECT в качестве ввода. Вы можете просто использовать эту команду (ваш SELECT скопирован как подзапрос, хотя, возможно, вы могли бы реорганизовать его, чтобы он возвращал эти различные GUID без подзапроса ... но мне нужно было бы увидеть всего монстра).

insert into (cs_ads_StoreLog)
select distinct
    a.LocationGUID
from
    (SELECT
        cs_ads_StoreLocations.LocationGUID, *Bunch of Selects AS Distance 
    FROM
        *Bunch of Inter Joins*
    WHERE
        *Bunch of conditions*
    ORDER BY 
        *You don't want to know*
    ) a

Затем вы можете просто вернуть SELECT, который у вас есть (он будет кэширован, так что вам не нужно слишком беспокоиться о падениях производительности).

0 голосов
/ 09 июля 2009

Возможно, динамический SQL решит эту проблему? Пример здесь . Или, может быть, вы могли бы сохранить значения в таблице var и вставить в нее данные.

...