科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道讲述如何使用SQL CLR表值函数进行扩展

讲述如何使用SQL CLR表值函数进行扩展

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本白皮书说明如何使用 CLR 表值函数根据包括数据库在内的各种源创建报表数据,从而创建可靠的 Reporting Services 报表。

作者:microsoft.com 来源:天新网 2008年4月25日

关键字: 数据库 Mssql SQL Server SQL

  • 评论
  • 分享微博
  • 分享邮件

对于每个零售店,我们都希望调用 GetProximity 并找出五台最近的 ATM。在 SQL Server 2005 中,有一个新的 APPLY 子句类型可处理此问题。这与联接稍有不同,因为我们希望联接函数参数,而不是函数结果。这意味着表值函数是为 APPLY 左侧返回的每一行调用的。然后,就可以将函数结果的并集联接到该查询的其余部分。以下是该报表数据集的 Transact-SQL 查询:

SELECT TOP(40) Sales.Store.Name, Person.Address.City,
   Person.StateProvince.StateProvinceCode, GetProximity_1.HitName,
   GetProximity_1.HitAddress, GetProximity_1.MapImage
   FROM Sales.CustomerAddress
      INNER JOIN Person.Address
         ON Sales.CustomerAddress.AddressID = Person.Address.AddressID
         AND Sales.CustomerAddress.AddressID = Person.Address.AddressID
      INNER JOIN Sales.Store
      INNER JOIN Sales.StoreContact ON Sales.Store.CustomerID = 
Sales.StoreContact.CustomerID
         ON Sales.CustomerAddress.CustomerID = 
Sales.StoreContact.CustomerID
      INNER JOIN Person.StateProvince ON Person.Address.StateProvinceID 
= Person.StateProvince.StateProvinceID
         AND Person.Address.StateProvinceID = 
Person.StateProvince.StateProvinceID
CROSS APPLY dbo.GetProximity(Person.Address.City,
   Person.StateProvince.StateProvinceCode, 5, 'SIC3578') AS 
GetProximity_1

请注意,其中使用了 CROSS APPLY 来将 GetProximity 函数参数与 Person.Address.City 和 Person.StateProvince.StateProvinceCode 表示的其他查询数据进行链接。

注意 若要在数据集查询中使用 APPLY 子句,必须使用通用查询设计器。基于 GUI 的查询设计器不能以图形方式显示它,并会引发异常。

我的报表设计使用两个嵌套的列表。内部列表包含用于 ATM 名称和地址的文本框,以及地图的图像。在我的报表中,此图像设置为 AutoSize,因此它会根据 Web 服务中的图像的大小而调整。外部列表包含用于零售店的名称和位置的文本框。外部列表按零售店名称进行分组。我的报表在布局模式下的图像如图 3 所示。

图 3. 布局模式下的报表图像

图 4 显示绘制有 ATM 位置图的报表

结论

本白皮书说明了如何使用 SQL Server 中的表值函数来扩展 SQL Server Reporting Services 的数据访问功能。表值函数让编程人员和报表设计员有一定的灵活性,使他们能够实现数据不直接存储在数据库表中的报表制作场景。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章