私は最初の手順を使用しようとしています。私はGoogleマトリックスのためにそれが必要です。これは私の手順で、XML解析エラーによる処理結果
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
が発見し、これを変数に距離の結果を格納するための実行です:
Msg 9402, Level 16, State 1, Procedure CalculateDistanceGoogle, Line 13
XML parsing: line 1, character 38, unable to switch the encoding
はあなたが助けることができる:
DECLARE @Distanza NVARCHAR
EXEC @Distanza = dbo.CalculateDistanceGoogle @ToAddress = 'CITY', @FromAddress='CITY', @DistanceistanceInKm = @Distanza
PRINT @Distanza
私はこのエラーを取得しますなぜ私は理解する?
ありがとうございました!
- 私はUTF 8行の置換えを追加していますが、今はエラーにはなりませんが、印刷結果は0です。まだ間違っていますか? - どのようにsp_OAをSQLCLRに置き換える必要がありますか?私はそれを直接置き換えると、作成されていないテーブルに対してエラーが表示されます。 – BigBlack
- キャストを削除しました - ノーカウントを設定しました - 試してキャッチする理由を理解できません。 – BigBlack