Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se puede llamar a procedimientos almacenados en el servidor o desde la aplicación cliente. En cualquier caso, los procedimientos almacenados siempre se ejecutan en el servidor, ya sea en el contexto del servidor o de una base de datos. No se requieren permisos especiales para ejecutar un procedimiento almacenado. Una vez que un ensamblado agrega un procedimiento almacenado al contexto del servidor o de la base de datos, cualquier usuario puede ejecutar el procedimiento almacenado siempre que el rol para el usuario permita las acciones realizadas por el procedimiento almacenado.
Llamar a un procedimiento almacenado en MDX se realiza de la misma manera que llamar a una función MDX intrínseca. Para un procedimiento almacenado que no toma parámetros, se usa el nombre del procedimiento y un par de paréntesis vacío, como se muestra aquí:
MyStoredProcedure()
Si el procedimiento almacenado toma uno o varios parámetros, los parámetros se proporcionan, en orden, separados por comas. En el ejemplo siguiente se muestra un procedimiento almacenado de ejemplo con tres parámetros:
MyStoredProcedure("Parameter1", 2, 800)
Llamar a procedimientos almacenados en consultas MDX
En todas las consultas MDX, el procedimiento almacenado debe devolver el tipo sintácticamente correcto requerido por una expresión MDX. Si un procedimiento almacenado no devuelve el tipo correcto, se produce un error MDX. En los ejemplos siguientes se muestran procedimientos almacenados que devuelven un conjunto, un miembro y el resultado de una operación matemática.
Devolver un conjunto
En los ejemplos siguientes se implementa un procedimiento almacenado, denominado MySproc, que devuelve un conjunto. En el primer ejemplo, MySproc devuelve el conjunto directamente en la expresión SELECT. En los dos segundos ejemplos, MySproc devuelve el conjunto como argumento para las funciones Crossjoin y 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
Devolver un miembro
En el ejemplo siguiente se muestra una función MySproc que devuelve un miembro:
SELECT Descendants(MySproc(a,b,c),3) ON 0 FROM Sales
Devolver el resultado de una operación matemática
SELECT Country.Members on 0, MySproc(Measures.Sales) ON 1 FROM Sales
Llamar a procedimientos almacenados con la instrucción Call
Se puede llamar a procedimientos almacenados fuera del contexto de una consulta MDX mediante la instrucción MDX Call .
Puede usar este método para crear instancias de los efectos secundarios de una consulta almacenada o para que la aplicación obtenga los resultados de una consulta almacenada. Un uso común de la Call instrucción sería usar Analysis Management Objects (AMO) para realizar funciones administrativas que no tienen un resultado devuelto. Por ejemplo, el siguiente comando llama a un procedimiento almacenado:
Call MyStoredProcedure(a,b,c)
El único tipo admitido devuelto del procedimiento almacenado en una Call instrucción es un conjunto de filas. La serialización de un conjunto de filas se define mediante XML for Analysis. Si un procedimiento almacenado en una Call instrucción devuelve cualquier otro tipo, se omite y no se devuelve en XML a la aplicación que realiza la llamada. Para obtener más información sobre los conjuntos de filas XML for Analysis, vea XML for Analysis Schema Rowsets.
Si un procedimiento almacenado devuelve un conjunto de filas de .NET, Analysis Services convierte el resultado en el servidor en un conjunto de filas XML for Analysis. El conjunto de filas XML for Analysis siempre lo devuelve un procedimiento almacenado en la Call función . Si un conjunto de datos contiene características que no se pueden expresar en el conjunto de filas XML for Analysis, se produce un error.
Los procedimientos que devuelven valores void (por ejemplo, subrutinas en Visual Basic) también se pueden emplear con la palabra clave CALL. Si, por ejemplo, quería usar la función MyVoidFunction() en una instrucción MDX, se emplearía la sintaxis siguiente:
CALL(MyVoidFunction)
Véase también
Administración de ensamblados de modelos multidimensionales
Definición de procedimientos almacenados