Aufrufen von gespeicherten ProzedurenCalling Stored Procedures

GILT FÜR:JaSQL Server Analysis ServicesNeinAzure Analysis ServicesAPPLIES TO:yesSQL Server Analysis ServicesnoAzure Analysis ServicesGespeicherte Prozeduren können auf dem Server oder von der Clientanwendung aufgerufen werden. Stored procedures can be called on the server or from client application. In beiden Fällen werden gespeicherte Prozeduren immer auf dem Server ausgeführt, entweder im Kontext des Servers oder einer Datenbank.In either case, stored procedures always run on the server, either the context of the server or of a database. Zum Ausführen einer gespeicherten Prozedur sind keine besonderen Berechtigungen erforderlich.There are no special permissions required to execute a stored procedure. Nach dem Hinzufügen einer gespeicherten Prozedur von einer Assembly zum Server- oder Datenbankkontext kann diese gespeicherte Prozedur von jedem Benutzer ausgeführt werden, sofern die Rolle des Benutzers die von der gespeicherten Prozedur durchgeführten Aktionen ermöglicht.Once a stored procedure is added by an assembly to the server or database context, any user can execute the stored procedure as long as the role for the user permits the actions performed by the stored procedure.

Eine gespeicherte Prozedur wird in MDX auf dieselbe Weise wie eine systeminterne MDX-Funktion aufgerufen.Calling a stored procedure in MDX is done in the same manner as calling an intrinsic MDX function. Für eine gespeicherte Prozedur ohne Parameter wird der Name der Prozedur und ein leeres Paar Klammern verwendet, wie im Folgenden gezeigt:For a stored procedure that takes no parameters, the name of the procedure and an empty pair of parentheses are used, as shown here:

MyStoredProcedure()  

Falls die gespeicherte Prozedur Parameter hat, werden diese in der richtigen Reihenfolge, durch Kommas getrennt, angegeben.If the stored procedure takes one or more parameters, then the parameters are supplied, in order, separated by commas. Das folgende Beispiel zeigt eine gespeicherte Beispielprozedur mit drei Parametern:The following example demonstrates a sample stored procedure with three parameters:

MyStoredProcedure("Parameter1", 2, 800)  

Aufrufen von gespeicherten Prozeduren in MDX-AbfragenCalling Stored Procedures in MDX Queries

In allen MDX-Abfragen muss die gespeicherte Prozedur den für einen MDX-Ausdruck erforderlichen, syntaktisch richtigen Typ zurückgeben.In all MDX queries, the stored procedure must return the syntactically correct type required by an MDX expression. Wenn die gespeicherte Prozedur nicht den richtigen Typ zurückgibt, tritt ein MDX-Fehler auf.If a stored procedure does not return the correct type, an MDX error occurs. Die folgenden Beispiele zeigen gespeicherte Prozeduren, die eine Menge, ein Element und das Ergebnis einer mathematischen Operation zurückgeben.The following examples demonstrate stored procedures that return a set, a member, and the result of a mathematical operation.

Zurückgeben einer MengeReturning a Set

In den folgenden Beispielen wird die gespeicherte Prozedur MySproc implementiert, die eine Menge zurückgibt.The following examples implement a stored procedure, called MySproc, that returns a set. Im ersten Beispiel gibt MySproc die Menge direkt an den SELECT-Ausdruck zurück.In the first example, MySproc returns the set directly in the SELECT expression. In den nächsten beiden Beispielen gibt MySproc die Menge als Argument für die Funktionen Crossjoin und DrilldownLevel zurück.In the second two examples, MySproc returns the set as an argument for the Crossjoin and DrilldownLevel functions.

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  

Zurückgeben eines ElementsReturning a Member

Das folgende Beispiel zeigt die Funktion MySproc, die ein Element zurückgibt:The following example shows a function MySproc function that returns a member:

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

Zurückgeben des Ergebnisses einer mathematischen OperationReturning the Result of a Math Operation

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

Aufrufen von gespeicherten Prozeduren mit der CALL-AnweisungCalling Stored Procedures with the Call Statement

Gespeicherte Prozeduren aufgerufen werden können, außerhalb des Kontexts einer MDX-Abfrage mithilfe der MDX Aufrufen Anweisung.Stored procedures can be called outside of the context of an MDX query using the MDX Call statement.

Sie können diese Methode verwenden, um entweder die Nebeneffekte einer gespeicherten Abfrage zu instanziieren, oder damit die Anwendung die Ergebnisse einer gespeicherten Abfrage erhält.You can use this method to either instantiate the side effects of a stored query or for the application to get the results of a stored query. Eine häufige Verwendung der Aufrufen Anweisung wäre, Analysis Management Objects (AMO) verwenden, um administrative Funktionen auszuführen, die nicht über ein Ergebnis zurückzugeben brauchen.A common use of the Call statement would be to use Analysis Management Objects (AMO) to perform administrative functions that do not have a return result. Der folgende Befehl ruft beispielsweise eine gespeicherte Prozedur auf:For example, the following command calls a stored procedure:

Call MyStoredProcedure(a,b,c)  

Der einzige unterstützte Typ zurückgegeben, die von der gespeicherten Prozedur in eine Aufrufen -Anweisung ist ein Rowset.The only supported type returned from stored procedure in a Call statement is a rowset. Die Serialisierung für ein Rowset wird durch XML for Analysis definiert.The serialization for a rowset is defined by XML for Analysis. Wenn eine gespeicherte Prozedur in einer Aufrufen Anweisung einen anderen Typ zurückgibt, wird dieser ignoriert und nicht im XML-Format an die aufrufende Anwendung zurückgegeben.If a stored procedure in a Call statement returns any other type, it is ignored and not returned in XML to the calling application. Weitere Informationen zu XMLA-Rowsets (XML for Analysis) finden Sie unter XMLA-Schemarowsets.For more information about XML for Analysis rowsets, see, XML for Analysis Schema Rowsets.

Wenn eine gespeicherte Prozedur ein .NET-Rowset zurückgibt, konvertiert Analysis ServicesAnalysis Services das Ergebnis auf dem Server in ein XMLA-Rowset.If a stored procedure returns a .NET rowset, Analysis ServicesAnalysis Services converts the result on the server to an XML for Analysis rowset. Die XML for Analysis-Schemarowset wird immer zurückgegeben, durch eine gespeicherte Prozedur in der Aufrufen Funktion.The XML for Analysis rowset is always returned by a stored procedure in the Call function. Wenn ein Dataset Funktionen enthält, die nicht in einem XMLA-Rowset ausgedrückt werden können, tritt ein Fehler auf.If a dataset contains features that cannot be expressed in the XML for Analysis rowset, a failure results.

Prozeduren, die void zurückgeben (wie z. B. Unterroutinen in Visual Basic), können ebenfalls mit dem CALL-Schlüsselwort verwendet werden.Procedures that return void values (for example, subroutines in Visual Basic) can also be employed with the CALL keyword. Beispielsweise wird die MyVoidFunction()-Funktion in einer MDX-Anweisung mit folgender Syntax verwendet:If, for example, you wanted to use the function MyVoidFunction() in an MDX statement, the following syntax would be employed:

CALL(MyVoidFunction)  

Siehe auchSee Also

Mehrdimensionales Modell Assemblys-Verwaltung Multidimensional Model Assemblies Management
Definieren gespeicherter ProzedurenDefining Stored Procedures