약 50 개 열을 반환하는 저장 프로 시저가 있습니다. SP에서 반환 한 열 목록에서 특정 열을 선택할 수있는 쿼리를 작성하고 싶습니다.저장 프로 시저에서 반환 된 열 선택
나는 select RSA_ID from exec(uspRisksEditSelect '1')
을 쓰려고했지만 그게 나에게 오류를 던졌습니다. 동적 인 SQL을 작성해야한다고 생각합니다. 그러나 나는 그것에 익숙하지 않다.
약 50 개 열을 반환하는 저장 프로 시저가 있습니다. SP에서 반환 한 열 목록에서 특정 열을 선택할 수있는 쿼리를 작성하고 싶습니다.저장 프로 시저에서 반환 된 열 선택
나는 select RSA_ID from exec(uspRisksEditSelect '1')
을 쓰려고했지만 그게 나에게 오류를 던졌습니다. 동적 인 SQL을 작성해야한다고 생각합니다. 그러나 나는 그것에 익숙하지 않다.
당신은 직접 저장된 프로 시저의 결과를 사용할 수 없습니다. 당신이 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
: ....
당신이 당신의 저장 프로 시저를 수정할 수있는 경우EXEC 호출을 중첩 한 저장 프로 시저와 함께 작동합니까? 예 : msdb.dbo.sp_help_job – MarmiK
테이블 값 사용자 기능을 작성해야합니다.
DECLARE @tableVar TABLE (ID INT, Name VARCHAR(50)) -- whatever your sp returns
INSERT INTO @tableVar
EXEC uspRisksEditSelect '1'
SELECT RSA_ID FROM @tableVar
을하지만, 동적 SQL을 사용할 필요는 확실히 없다 : 당신은 메모리 또는 임시 테이블에 그것을 저장하고 거기에서 갈 필요 -
질문에 답할 수 없어 OP에 대한 의견이었을 것입니다. 제안이 옵션이 아닐 수도 있습니다. TVF를 만들거나 할 수 없다면? –
, 당신은 쉽게 매개 변수로 필요한 열 수를 넣을 수 있습니다 수동으로 emp 테이블 - 자동으로 생성됩니다. 희망이 도움이됩니다.
이 오류를 공유하는 데 오류가 발생했습니다. – Oded
exec (uspRisksEditSelect, '1')가 단일 값이나 테이블을 반환해야합니까? –