科技行者

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

知识库

知识库 安全导航

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

如何使用SQL CLR表值函数进行扩展(4)

  • 扫一扫
    分享文章到微信

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

Microsoft SQL Server 2005 的一项新增功能是其与 Microsoft .NET Framework 公共语言运行库 (CLR) 的集成。这使得人们能够将 .NET Framework 类和函数纳入 Transact-SQL 语句和查询。

作者:microsoft.com 来源:microsoft.com 2007年8月30日

关键字: CLR SQL Server 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)
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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