科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

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

关键字: Mssql SQL SQL Server

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

Web 服务和表值函数

表值函数的一个有趣功能是从 Web 服务中提取数据的能力。这可用于创建非常规的报表。我将说明如何在表值函数中使用 Microsoft MapPoint Web 服务,并将它与 AdventureWorks 数据库中的数据联接,从而将空间数据显示在地图上和显示在报表中。

使用 MapPoint Web 服务:

您必须先从 Microsoft 获得免费的开发人员帐户,然后才能开始按照 MapPoint Web 服务进行开发。您可以访问 MapPoint Web 服务客户服务网站,从中获取一个帐户。开始根据该 Web 服务进行开发之前,可以从一个好地方获取信息,即 MapPoint Web 服务 SDK 入门。

您需要使用 Visual Studio 将 Web 引用添加到您的项目中,该引用指向 MapPoint 暂存服务器上的 .wsdl 文件。有关为 MapPoint Web 服务配置 Web 引用的详细信息,请参阅访问 MapPoint Web 服务SOAP API。

MapPoint Web 服务提供四种服务,每种服务都有其自己的 SOAP 端点:

• 公共服务提供可供其他服务使用的功能。此服务用于检索元数据和用于实用功能。
• 查找服务可用于搜索位置,查找某一地址的经度和纬度(“地理编码”),以及查找某位置附近的兴趣点。
• 路线服务指示一个位置到另一个位置的行车路线。
• 呈现服务可用于利用位置和路线信息创建地图图像。

MapPoint Web 服务表值函数:

最后,我希望我的表值函数使用 MapPoint Web 服务来执行以下任务:

• 使用查找服务来查找 AdventureWorks 自行车店的经度和纬度。
• 使用查找服务来查找距此经度和纬度最近的五台自动柜员机 (ATM)。
• 使用呈现服务来查找从该商店到 ATM 的路线。
• 使用呈现服务将此路线显示在地图上。

首先,我必须定义一个称为 GetProximity 的表值函数。以下 Transact-SQL 代码显示我的表值函数的签名:

CREATE FUNCTION GetProximity(@city nvarchar(200), @state nvarchar(2),
   @count int, @entityTypeName nvarchar(200))
RETURNS TABLE 
(HitName nvarchar(200), HitAddress nvarchar(200), MapImage 
varbinary(max))

GetProximity 使用城市名和两位数的州代码来代表初始位置。它返回实体数,和要搜索的实体类型名。它会搜索 n 个最近的实体,其中,n 由计算参数指定,实体类型由 entityTypeName 参数指定。它会返回一个表和一幅地图(二进制文件图像),表中包含名称列、地址列,地图中包含每个实体的路线。

C# 方法签名如下所示:

public static IEnumerable 
InitMap(string city, string state, int count,
   string entityTypeName)
public static void FillRow(Object obj, 
out SqlChars name, out SqlChars
   address, out SqlBinary map)

请注意,nvarchar Transact-SQL 数据类型映射到 SqlChars .net Framework 数据类型,而 varbinary Transact-SQL 数据类型映射到 SqlBinary .NET Framework 数据类型。有关数据类型之间的映射的完整列表,请参阅 System.Data.SqlTypes 命名空间的文档。

在 InitMap 方法中,我将城市和州转换成经度和纬度。接着,我找到了与此坐标接近的所有实体。最后,我找到了初始位置和找到的实体之间的行车路线。返回值是封装有行车路线的一组 Route 对象。

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

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

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