【发布时间】:2016-08-21 23:55:47
【问题描述】:
我正在尝试使用我的第一个程序。我需要它用于谷歌矩阵。这是我的程序,在那里找到
CREATE PROCEDURE [dbo].[CalculateDistanceGoogle]
(@ToAddress NVARCHAR(100),
@FromAddress NVARCHAR(100),
@DistanceistanceInKm FLOAT OUTPUT)
AS
BEGIN
DECLARE @Object INT
DECLARE @ResponseonseText NVARCHAR(4000)
DECLARE @StatuserviceUrl NVARCHAR(500)
SET @StatuserviceUrl = 'http://maps.googleapis.com/maps/api/distancematrix/xml?origins=' + @ToAddress + '&destinations=' + @FromAddress +'&mode=driving&language=it-IT&units=metric;'
EXEC sp_OACreate 'MSXML2.XMLHTTP', @Object OUT; EXEC sp_OAMethod @Object, 'open', NULL, 'get', @StatuserviceUrl, 'false' EXEC sp_OAMethod @Object, 'send' EXEC sp_OAMethod @Object, 'responseText', @ResponseonseText OUTPUT
DECLARE @Response XML
SET @Response = CAST(CAST(@ResponseonseText AS NVARCHAR(MAX)) AS XML)
DECLARE @Status NVARCHAR(20) DECLARE @Distance NVARCHAR(20)
SET @Status = @Response.value('(DistanceMatrixResponse/row/element/status)[1]', 'NVARCHAR(20)')
IF(@Status = 'ZERO_RESULTS')
SET @Distance = NULL
ELSE
SET @Distance = @Response.value('(DistanceMatrixResponse/row/element/distance/value)[1]', 'NVARCHAR(20)')
SET @DistanceistanceInKm = ROUND(CAST(@Distance AS FLOAT) / 1000, 1)
PRINT @DistanceistanceInKm
END
这是将距离结果存储在变量中的执行:
DECLARE @Distanza NVARCHAR
EXEC @Distanza = dbo.CalculateDistanceGoogle @ToAddress = 'CITY', @FromAddress='CITY', @DistanceistanceInKm = @Distanza
PRINT @Distanza
我收到此错误:
消息 9402,级别 16,状态 1,过程 CalculateDistanceGoogle,行 13
XML解析:第1行,第38个字符,无法切换编码
你能帮我理解为什么吗?
谢谢!
【问题讨论】:
标签: parsing stored-procedures sql-server-2005