Microsoft SQL ServerGeography
データ型の使用を開始しています。すべて問題ありませんが、小さな問題が発生しました。
最初にテーブル (ClientId は実際にはプライマリではありません) ルートを 2 つの列ClientId
( int
) とZone
( geography
)で作成することから始めました。
CREATE TABLE [dbo].[routes]
(
[ClientId] [int] NOT NULL,
[Zone] [geography] NULL,
)
次のスクリプトを実行しました (302624121 は新しく作成されたテーブルです)。
SELECT
o.id as 'Id', c.name as 'Name', t.name AS 'Type',
c.length AS 'Length'
FROM
sys.sysobjects as o
INNER JOIN
sys.syscolumns AS c ON o.id = c.id
INNER JOIN
sys.systypes AS t ON c.xtype = t.xtype
WHERE
(o.id = 302624121)
ほら、これが私が得るものです:
302624121 ClientId int 4
302624121 Zone hierarchyid -1
302624121 Zone geometry -1
302624121 Zone geography -1
ゾーンは3回作成されました!!!!
次に、ストアド プロシージャを追加して、クライアントの地理に含まれる特定のポイントのデータを上記のテーブルから選択しました。
Create proc [dbo].[up_RoutesSelectByGeography]
@ClientId int,
@Zone geography
as
begin
SELECT [ClientId], [Zone]
FROM [dbo].[Routes]
where ClientId = @ClientId and [Zone].STContains(@Zone) = 1
end
プロシージャの ID を使用して次のクエリを実行しました。
SELECT
o.id as 'Id', c.name as 'Name',
t.name AS 'Type', c.length AS 'Length'
FROM
sys.sysobjects as o
INNER JOIN
sys.syscolumns AS c ON o.id = c.id
INNER JOIN
sys.systypes AS t ON c.xtype = t.xtype
WHERE
(o.id = 334624235)
そして、同じ変数に対して常に3つのタイプを取得します。
334624235 @ClientId int 4
334624235 @Zone hierarchyid -1
334624235 @Zone geometry -1
334624235 @Zone geography -1
この問題は、同じ変数名を 3 回取得するため、フィールド名を変数にマップできないため、問題を引き起こしています。
何が起こっているのかについての光はありますか?私のc#にマップする変数はどれですか??