2010-05-17 5 views
3

약 50 개 열을 반환하는 저장 프로 시저가 있습니다. SP에서 반환 한 열 목록에서 특정 열을 선택할 수있는 쿼리를 작성하고 싶습니다.저장 프로 시저에서 반환 된 열 선택

나는 select RSA_ID from exec(uspRisksEditSelect '1')을 쓰려고했지만 그게 나에게 오류를 던졌습니다. 동적 인 SQL을 작성해야한다고 생각합니다. 그러나 나는 그것에 익숙하지 않다.

+1

이 오류를 공유하는 데 오류가 발생했습니다. – Oded

+0

exec (uspRisksEditSelect, '1')가 단일 값이나 테이블을 반환해야합니까? –

답변

6

당신은 직접 저장된 프로 시저의 결과를 사용할 수 없습니다. 당신이 t를 만들 필요가 없습니다이 경우

CREATE PROCEDURE sp_GetDiffDataExample 
     @columnsStatement NVARCHAR(MAX) -- Needed columns 
AS 
BEGIN 
    DECLARE @query NVARCHAR(MAX) 
    SET @query = N'SELECT ' + @columnsStatement + N' INTO ##TempTable FROM dbo.TestTable' 
    EXEC sp_executeSql @query 
    SELECT * FROM ##TempTable 
    DROP TABLE ##TempTable 
END 

: ....

당신이 당신의 저장 프로 시저를 수정할 수있는 경우
+1

EXEC 호출을 중첩 한 저장 프로 시저와 함께 작동합니까? 예 : msdb.dbo.sp_help_job – MarmiK

3

테이블 값 사용자 기능을 작성해야합니다.

DECLARE @tableVar TABLE (ID INT, Name VARCHAR(50)) -- whatever your sp returns 

INSERT INTO @tableVar 
    EXEC uspRisksEditSelect '1' 

SELECT RSA_ID FROM @tableVar 

을하지만, 동적 SQL을 사용할 필요는 확실히 없다 : 당신은 메모리 또는 임시 테이블에 그것을 저장하고 거기에서 갈 필요 -

+0

질문에 답할 수 없어 OP에 대한 의견이었을 것입니다. 제안이 옵션이 아닐 수도 있습니다. TVF를 만들거나 할 수 없다면? –

0

, 당신은 쉽게 매개 변수로 필요한 열 수를 넣을 수 있습니다 수동으로 emp 테이블 - 자동으로 생성됩니다. 희망이 도움이됩니다.

관련 문제