2010-08-01 77 views
1

我有一個包含GEOMETRY數據類型的表。 SQL Server 2008附帶一個內置函數,用於將這些GEOMETRY數據類型轉換爲GML - GEOMETRY.AsGml()。我相信這個功能不過是一個自定義的用戶定義函數。SQL Server 2008 GEOMETRY.AsGml()在加入視圖

此函數完全按照預期工作,直到我嘗試在與其他表/視圖連接的視圖中使用它。在這種情況下,我收到了一條錯誤消息:「遠程函數引用'dbo.PROPERTY.SHAPE.AsGml'不允許,列名'dbo'找不到或不明確。」

我一直在做的是創建一個初始視圖,其中包含獲取所需字段所需的所有連接,並將GEOMETRY字段保留爲其本機格式。然後,在次要視圖中,我將執行GML轉換。

這些視圖的分層有明顯的性能影響,我想知道爲什麼我不能只在視圖中使用連接執行AsGml()?

回答

3

使用內聯Select語句爲我解決了這個問題。

這不起作用:

SELECT dbo.H1N1_2009.COUNTY, dbo.states.STATE_NAME, dbo.states.geom.AsGml() 
AS GML 
FROM dbo.H1N1_2009 INNER JOIN dbo.states ON dbo.H1N1_2009.ID = dbo.states.ID 

這工作:

SELECT  dbo.H1N1_2009.COUNTY, states_1.STATE_NAME, 
      (SELECT geom.AsGml() AS Expr1 FROM dbo.states WHERE(ID =dbo.H1N1_2009.ID)) AS GML 
FROM  dbo.H1N1_2009 INNER JOIN dbo.states AS states_1 ON dbo.H1N1_2009.ID states_1.ID 

希望這可以幫助其他人。

+0

這似乎很倒退。我想聽聽爲什麼這是必要的。這對於更復雜的連接是一個真正的痛苦。 – Damien 2011-06-29 01:15:10