0

SQL Server 2008を使用して基本的な近接検索を実行しようとしています(指定された位置の緯度/経度を渡して、返される結果が位置からの距離順にテーブル内の位置になるようにします)。

SQLServer内で完全に機能するコードがあります。しかし、ASP / VBScript内から実行しようとすると(尋ねないでください)、次のエラーが発生します。

スカラー変数'@currentPosition'を宣言する必要があります(以下のコメント行を参照)

コードは次のとおりです。

objCommand.CommandText = "declare @currentLatitude float, @CurrentLongitude float"
objCommand.Execute
objCommand.CommandText = "declare @currentPosition geography"
objCommand.Execute
objCommand.CommandText = "declare @radiusBuffer geography"
objCommand.Execute
''''error line below:
objCommand.CommandText = "Set @radiusBuffer = @currentPosition.BufferWithTolerance(10 * 1609.344,.9,1);"
objCommand.Execute
objCommand.CommandText = "set @CurrentLatitude = 12.34567"
objCommand.Execute
objCommand.CommandText = "set @CurrentLongitude = -12.34567"
objCommand.Execute
objCommand.CommandText = "SET @currentPosition = geography::Point(@CurrentLatitude, @CurrentLongitude, 4326);"
objCommand.Execute
objCommand.CommandText = "SELECT a.*, ROW_NUMBER() OVER (ORDER BY GeoLocation.STDistance(@currentPosition) ASC) AS RowNum from table_name a WHERE a.GeoLocation.STDistance(@currentPosition) < 16093.44"
objCommand.Execute

私は変数を宣言しています(または少なくとも私はそう思います)が、明らかに何かが欠けているか、間違って実行しています。うまくいけば、私より賢い人が私に何を見せてくれるでしょう:)

お時間をいただきありがとうございます。

4

1 に答える 1

1

すべてのコマンドを1つの文字列にまとめて、1つの文字列内で実行する必要がありますExecute

于 2013-01-24T01:13:07.633 に答える