我有一个SQL SELECT语句,它将以XML格式创建结果。每次从原始SELECT语句中选择一行时,我想插入另一个表(Log via insert)。无论如何要在SELECT语句中包含INSERT语句吗?
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*)
这只是一些在SELECT语句之外有INSERT的示例代码。我需要在SELECT语句中运行它的东西或运行INSERT的其他方式
只是澄清一下。此示例代码是Stored Proc
的一部分答案 0 :(得分:1)
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
(它将被缓存,所以你不必担心性能命中太多)。
答案 1 :(得分:0)
也许动态SQL会解决这个问题?示例here。 或者,您可以将值存储在表var中,然后对其进行插入。