2014-01-30 4 views
-1

테이블에 데이터를 삽입하는 저장 프로 시저를 만듭니다. 테이블에는 8 개의 필드가 있습니다. 다섯 개는 입력이고 다른 세 개는 처음 다섯 개에 의존하는 쿼리에서 검색해야합니다. begin 문을하기 전에 temp_table (나머지 데이터를 얻기 위해 하나의 쿼리 만 사용하기 때문에) 및 VALUES (#temp_table에서 col1을 선택하고 #temp_table ...에서 col2를 선택)를 만들고 싶습니다. 구문 및 순서에 대한 도움이 필요합니다.쿼리에서 데이터를 가져 오는 삽입

CREATE PROCEDURE dbo.table 
    @ value1 int, 
    @ value2 int, ...etc 
AS 
    SET NOCOUNT ON 
    IF object_ID('tempdb..#temp_table') is not null drop table #temp_table 
    SELECT some stuff 
    INTO #temp_table 
    FROM some place 
    WHERE magical things happen... 
BEGIN 
    INSERT INTO dbo.table 
    (fields) 
    VALUES 
    (
     select colum1 from #temp_table 
     etc 
    ) 
END 

나는 어디로 가고 있습니까?

답변

2

당신은 아마도 공통 테이블 표현식을 사용하여 임시 테이블을 사용하지 않고도

INSERT INTO Tab (col1, col2,....., col8) 
SELECT @var1, @var2, ...., var5, t2.val1, t2.val2, t2.val3 
FROM Tab2 t2 
WHERE (/*you can do your filtering here*/) 
+0

@MathLover 정상적으로 작동해야합니다. 오류가 있습니까? – user2989408

+0

@ uset2989408 예 : 프로 시저 lsp.insertTable ... 키워드 'SELECT'근처의 구문이 잘못되었습니다. 값이 – MathLover

0

당신은 아마이 작업을 수행 할 수있는 뭔가를 할 수 있습니다. 그러나 임시 테이블을 만드는 것이 더 간단하다면 꼭 그렇게하십시오.

CREATE TABLE #temp_table 
(
    col6 int, -- change data types as appropriate 
    col7 int, 
    col8 int 
    ... 
) 

INSERT INTO #temp_table 
SELECT value6, value7 ... FROM Whatever -- whatever the query is. 


INSERT INTO FinalTable 
(col1, col2, col3, col4, col5, col6, col7, col8) 
SELECT @param1, @param2, @param3, @param4, @param5, col6, col7, col8 
FROM #temp_table 

"BEGIN 전에"임시 테이블을 만들고 싶다는 의미가 확실하지 않습니다. 임시 테이블을 테이블 반환 매개 변수로 사용하거나 저장 프로 시저의 맨 처음에 임시 테이블을 만들려는 방금 저장 프로 시저 외부를 의미합니까?

예상 검색어 : 괜찮습니까, 하위 쿼리에 문제가있는 경우 이는 아마()로 묶지 않았기 때문일 수 있습니다. 이 시도 :

INSERT INTO dbo.table 
(fields) 
VALUES 
(
    (select top 1 column1 from #temp_table) , 
    (select top 1 column2 from #temp_table) 
    -- etc 
) 

또한, BEGINEND을 저장 프로 시저가 필요하지 않습니다. (조건부 또는 루프가 아니기 때문에) 블록에 해당 비트를 넣을 필요가 없으므로 처음에 BEGIN을 다시 넣거나 둘 다 꺼내겠습니다.

+0

인 라인을 참조하십시오. 정확히 무슨 뜻인지 보여주기 위해 제 질문을 수정했습니다. – MathLover

+0

@MathLover 업데이트 된 응답이되기를 바랍니다. 도움이됩니다. –

관련 문제