2012-11-21 2 views

답변

4

또한 저장 프로 시저에서 INSERT 데이터에 INSERT INTO... SELECT

INSERT INTO myTable (col1, col2, col3....) 
SELECT 1, 2, mySP_or_mySDF(), 3, 4 

를 사용하려고, 당신은 임시 테이블을 생성하고 삽입해야합니다 결과를 임시 테이블에 먼저 넣은 다음 결과를 사용하여 최종 테이블에 삽입 할 수 있습니다.

+0

보이는 함수는 호출 할 수 있지만 sp가 아닌가요? – bjan

+0

@bjan 제 편집 내용을 보려면 먼저 저장된 테이블의 데이터를 임시 테이블에 추가해야합니다. 그런 다음 추가 값을 삽입하려고하므로 사용할 수 있습니다. 그래서 그것에 대한 또 다른 질문입니다 - http://stackoverflow.com/questions/653714/how-to-select-into-temp-table-from-stored-procedure – Taryn

+0

나는 오라클의 시퀀스의 사용법을 모방하고 싶다. 그래서 그것은 하나의 명령문 안에 있어야합니다. – bjan

2

당신이 원하는 경우

Insert into myTable (....) values (1,2,dbo.mySP_or_mySDF(), 3,4) 
+1

보이지만 sp가 아닌 기능을 호출 할 수 있습니까? – bjan

1

당신은 문 SQL을 제외하고는 SELECT/UPDATE/INSERT 문 내에서 저장 프로 시저를 호출 할 수 없습니다 :

insert into <whatever> 
    exec <some sql statement here>; 

(및 관련 구조를).

저장 프로 시저가 실제로 값을 반환하지 않습니다. 음, 정수를 반환합니다. 그래서, 당신은 할 수 :

declare @retval int; 
exec @retval = mysp; 
insert into myTable(col1, col2, col3, col4) 
    select 1, 2, @retval, 3, 4 

당신은 저장 프로 시저를 가지고있는 SP 본문에 다음과 같은 성명을 포함하여 "반환"4 개 값을 수 있습니다 : 다음 myTable에로 삽입을하고

select 1, 2, <whatever>, 3, 4 

과 (col1, col2, col3, col4) exec mysp;

+0

동적 인 SQL이 필요하지 않습니다.'insert into MyTable exec MyProc'은 @Pondlife와 잘 작동합니다. – Pondlife

+0

. . 당신 말이 맞습니다. –

관련 문제