sql 2005 调用存储过程

可以在服务器或从客户端应用程序调用存储过程。在任何一种情况下,存储过程都始终运行于服务器上,或者使用服务器的上下文,或者使用数据库的上下文。执行存储过程时,不需要具备特殊的权限。存储过程由程序集添加到服务器或数据库上下文后,只要用户的角色允许执行存储过程所执行的操作,则任何用户均可执行该存储过程。

调用 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
posted @ 2009-03-05 10:21  追逐苦痛  阅读(1227)  评论(0编辑  收藏  举报