답변

5

당신은 인라인과 같이 저장 프로 시저를 호출 할 수 없습니다에게 것으로 예상된다.

몇 가지 옵션이 포함됩니다. 1) 저장 프로 시저를 실행하고 결과를 임시 테이블에 저장합니다. 그런 다음 임시 테이블을 사용하십시오. 예 :

CREATE TABLE #Example 
(
ID INTEGER 
) 
INSERT #Example 
EXECUTE My_SP 

SELECT t.ID FROM MyTable t JOIN #Example e ON t.ID = e.ID 
DROP TABLE #Example 

2) 예를 들어, 인라인 호출 할 수있는 사용자 정의 함수에 sproc에 변환

CREATE FUNCTION dbo.MyFunc() 
    RETURNS TABLE 
AS 
RETURN 
(
    SELECT ID FROM SomeTable WHERE .... 
) 

SELECT t.ID FROM MyTable t JOIN dbo.MyFunc() f ON t.ID = f.ID 

3) SPROC는 하나의 ID를 반환하는 경우, 대신 SPROC에서 출력 매개 변수를 반환 고려하고 다음과 같이 사용합니다

DECLARE @ID INTEGER 
EXECUTE MY_SP @ID OUTPUT 

SELECT ID FROM MYTABLE 
WHERE ID = @ID 
+0

+1 그것에 나를 이길 도움이되지 않았다. –

+0

정말 간단한 필요성이 그렇게 복잡한 해결책이 있습니까? –

+0

@ user544433 - 예, 시도하는 것처럼 저장 프로 시저를 인라인으로 호출 할 수 없습니다. 어떤 솔루션을 선택 하느냐는 정확한 시나리오에 달려 있습니다. 예 : 현재 sproc이하는 일에 따라 사용자 정의 함수를 사용할 수 없을 수도 있습니다 (sproc에서 할 수있는 모든 기능을 수행 할 수는 없지만 함수를 인라인으로 호출 할 수는 있습니다) – AdaTheDev

1

내가 그냥 SP를 호출합니다 간부 문을 필요가 있다고 생각하지 않습니다, 간부는 별도의 문

+0

그것은 –

0

난 당신이 모든 것을 할 수 있다고 생각하지 않습니다. 아마도 저장 프로 시저가 아닌 사용자 정의 함수 (User Defined Function)를 생각하고 계십니까? 컨텍스트에 따라 스칼라 UDF가 필요합니다.

0

이 시도 :

SELECT ID FROM MYTABLE WHERE ID = @@SPID 
관련 문제