2009-07-09 4 views
1

결과를 XML 형식으로 작성하는 SQL SELECT 문이 있습니다. 원래 SELECT 문에서 행을 선택할 때마다 다른 테이블 (삽입을 통해 로그)에 INSERT하고 싶습니다. INSERT 문을 SELECT 문 안에 포함시킬 수 있습니까?SQL : 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를 실행하는 또 다른 방법이있는 무언가가 필요합니다.

명확히하기 위해. 이 샘플 코드는 저장 프로 시저의 일부입니다

+0

에릭의 대답은 내가 제안한 것이지만 SELECT 내부에 INSERT가있는 것에 대해 단호한 것처럼 보입니다. 그 이유는 무엇입니까? 또한 SELECT로 반환 된 각 행에 대해 몇 가지 작업을 수행 할 수 있다고 생각하는 것 같습니다. 집합 기반 처리라는 것을 잊지 마십시오. SELECT의 결과는 집합이 아닌 행 집합입니다. 개별 행. –

답변

0

아마도 동적 SQL이이를 해결할 것입니까? 예 here. 또는 테이블 var에 값을 저장하고 그 값을 삽입 할 수 있습니다.

+0

예제 코드는 Stored Proc의 일부입니다. 나는 INSERT를 포함시키는 방법을 찾고있다. – user135356

+0

동적 SQL 및 테이블 변수는 SP에서 사용할 수 있습니다. 참고하시기 바랍니다. :) – javamonkey79

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을 반환 할 수 있습니다.