0

有人知道如何在 SQL Server 2012 存储过程中获取地理空间数据类型的校验和吗?我在其他类型上使用校验和没有问题,但它在地理上抛出异常说:

参数数据类型 sys.geography 对于校验和函数的参数 9 无效。

我已经在 SQL Server Management Studio 中运行了调试器,但我不确定该怎么做。

4

1 回答 1

1

从您的评论看来,您的立场如下。

CREATE TABLE T
(
I INT,
G geography
);

INSERT INTO T 
VALUES (1,geography::STGeomFromText('LINESTRING(-122.360 47.656, 
                                             -122.343 47.656 )', 4326));

然后您正在运行执行以下操作的脚本

SELECT Avg(Cast(CHECKSUM(*) As Float))
FROM  T;

您需要对其进行更改,以便它执行以下操作以避免此错误。

WITH CTE AS
(
SELECT I,
       CAST(G AS VARBINARY(MAX)) AS G
FROM T       
)
SELECT Avg(Cast(CHECKSUM(*) As Float))
FROM  CTE;

或者可能

SELECT Avg(Cast(CHECKSUM(I,CAST(G AS VARBINARY(MAX))) As Float))
FROM  T;

*但是无论如何您都不能与这些表一起使用。

于 2013-10-22T17:35:22.747 回答