다음을 통해 공유


저장 프로시저 호출

저장 프로시저는 서버 또는 클라이언트 애플리케이션에서 호출할 수 있습니다. 두 경우 모두 저장 프로시저는 항상 서버의 컨텍스트 또는 데이터베이스의 서버에서 실행됩니다. 저장 프로시저를 실행하는 데 필요한 특별한 권한은 없습니다. 어셈블리가 저장 프로시저를 서버 또는 데이터베이스 컨텍스트에 추가하면 사용자 역할이 저장 프로시저에서 수행하는 작업을 허용하는 한 모든 사용자가 저장 프로시저를 실행할 수 있습니다.

MDX에서 저장 프로시저 호출은 내장 MDX 함수를 호출하는 것과 동일한 방식으로 수행됩니다. 매개 변수를 사용하지 않는 저장 프로시저의 경우 다음과 같이 프로시저 이름과 빈 괄호 쌍이 사용됩니다.

MyStoredProcedure()  

저장 프로시저에서 하나 이상의 매개 변수를 사용하는 경우 매개 변수는 순서대로 쉼표로 구분됩니다. 다음 예제에서는 세 개의 매개 변수가 있는 샘플 저장 프로시저를 보여 줍니다.

MyStoredProcedure("Parameter1", 2, 800)  

MDX 쿼리에서 저장 프로시저 호출

모든 MDX 쿼리에서 저장 프로시저는 MDX 식에 필요한 구문상 올바른 형식을 반환해야 합니다. 저장 프로시저가 올바른 형식을 반환하지 않으면 MDX 오류가 발생합니다. 다음 예제에서는 집합, 멤버 및 수학 연산의 결과를 반환하는 저장 프로시저를 보여 줍니다.

집합 반환

다음 예제에서는 집합을 반환하는 MySproc이라는 저장 프로시저를 구현합니다. 첫 번째 예제에서 MySproc은 SELECT 식에서 직접 집합을 반환합니다. 두 번째 두 예제에서 MySproc은 Crossjoin 및 DrilldownLevel 함수에 대한 인수로 집합을 반환합니다.

SELECT MySetProcedure(a,b,c) ON 0 FROM Sales  
SELECT Crossjoin(MySetProcedure(a,b,c)) ON 0 FROM Sales  
SELECT DrilldownLevel(MySetProcedure(a,b,c)) ON 0 FROM Sales  

멤버 반환

다음 예제에서는 멤버를 반환하는 함수 MySproc 함수를 보여 줍니다.

SELECT Descendants(MySproc(a,b,c),3) ON 0 FROM Sales  

수학 연산의 결과 반환

SELECT Country.Members on 0, MySproc(Measures.Sales) ON 1 FROM Sales  

Call 문을 사용하여 저장 프로시저 호출

MDX Call 문을 사용하여 MDX 쿼리 컨텍스트 외부에서 저장 프로시저를 호출할 수 있습니다.

이 메서드를 사용하여 저장된 쿼리의 부작용을 인스턴스화하거나 애플리케이션에서 저장된 쿼리의 결과를 가져올 수 있습니다. 이 문의 일반적인 용도 Call 는 AMO(Analysis Management Objects)를 사용하여 반환 결과가 없는 관리 함수를 수행하는 것입니다. 예를 들어 다음 명령은 저장 프로시저를 호출합니다.

Call MyStoredProcedure(a,b,c)  

문의 저장 프로시저 Call 에서 반환되는 유일한 지원되는 형식은 행 집합입니다. 행 집합에 대한 serialization은 XML for Analysis에 의해 정의됩니다. 문의 저장 프로시저가 다른 형식을 Call 반환하는 경우 무시되고 XML에서 호출 애플리케이션에 반환되지 않습니다. XML for Analysis 행 집합에 대한 자세한 내용은 XML for Analysis Schema Rowsets를 참조하세요.

저장 프로시저가 .NET 행 집합을 반환하는 경우 Analysis Services는 서버의 결과를 분석용 XML 행 집합으로 변환합니다. XML for Analysis 행 집합은 항상 함수의 저장 프로시저에 Call 의해 반환됩니다. 데이터 세트에 XML for Analysis 행 집합에서 표현할 수 없는 기능이 포함되어 있으면 오류가 발생합니다.

void 값을 반환하는 프로시저(예: Visual Basic의 하위 경로)도 CALL 키워드와 함께 사용할 수 있습니다. 예를 들어 MDX 문에서 MyVoidFunction() 함수를 사용하려는 경우 다음 구문이 사용됩니다.

CALL(MyVoidFunction)  

또한 참조하십시오

다차원 모델 어셈블리 관리
저장 프로시저 정의