1

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#にマップする変数はどれですか??

4

1 に答える 1