mardi 23 août 2016

SQL Server 2005 : Create Procedure for Google Directions

Can you help me to convert this procedure that give me the distance beetween the start address and the end address

CREATE PROCEDURE [dbo].[CalculateDistanceGoogle]
    (@ToAddress NVARCHAR(100), 
     @FromAddress NVARCHAR(100), 
     @DistanceistanceInKm FLOAT OUTPUT) 
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @Object INT 
    DECLARE @ResponseonseText NVARCHAR(MAX) 
    DECLARE @StatuserviceUrl NVARCHAR(500)

    SET @StatuserviceUrl = 'http://ift.tt/2bfUgvP' + @ToAddress + '&destinations=' + @FromAddress +'&mode=driving&language=en-EN&units=metric&key=APIKEY;'

    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 @ResponseonseText = REPLACE(@ResponseonseText, N'encoding="UTF-8"', N'');
    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

    EXECUTE sp_OADestroy @Object
END

To a procedure that use the direction api instead of the distance with this link

http://ift.tt/2beA0xX KEY

and print all XML end_address in the order that google give me back?

I'm using SQL Server 2005

Aucun commentaire:

Enregistrer un commentaire