2012-02-01 4 views
0

가능하다고 생각되지만 SQL Server 2008에서 저장 프로 시저를 실행 한 결과에서 테이블 변수를 설정할 수 없음을 확인하고 싶습니다.SQL Server 2008의 저장 프로 시저에서 exec에서 SET 테이블 변수

나는 다음을 수행하려고했던 :

DECLARE @Results TABLE (RESULT_ID INT); 

INSERT INTO @Results (RESULT_ID) VALUES (1); 

SET @Results = 
EXEC dbo.[spResultLookup] @Results; 

내 목표는 저장 프로 시저에 @Results을 통과 한 후 spResultLookup에 대한 호출의 결과로 @Results를 대체하는 것입니다.

대안은 @Results의 행을 삭제하고 INSERTEXEC 문과 함께 사용하는 것입니다.

답변

0

다음은 테이블을 procs로 전달하는 방법을 보여주는 문서이지만 DML로 테이블을 업데이트 할 수 없음을 명시하고 있습니다.

http://msdn.microsoft.com/en-us/library/bb510489.aspx

물론 당신은 발신자와 발동 범위에서 사용할 수있는 것 임시 테이블을 만들 수 있습니다. 이것은 아마도 당신이 당신의 유스 케이스를 위해 사용해야 할 것입니다.

CREATE table #tmp(id int, val VARCHAR(50)) 
go 

CREATE PROC UpdateTmpTable as 
begin 
    insert into #tmp(id,val) values(1,'abc') 
end 
GO 

exec dbo.UpdateTmpTable 
select * from #tmp 
+0

임시 테이블은 사용 가능한 최상의 옵션입니다. 내가 원하는 건 스토어드 프로 시저 호출 결과로 호출 테이블 변수를 덮어 쓰는 방법이었다. 기본적으로 INT 나 VARCHAR와 같은 다른 타입들처럼 취급합니다. – Josh

관련 문제