首先,我創建了一個名爲Placemarks
的表,其中包含「地理」類型的列。「地理」類型的每列中的syscolumns中的多個條目
CREATE TABLE [dbo].[Placemarks](
[ID] [int] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Location] [geography] NOT NULL,
CONSTRAINT [PK_Placemarks]
PRIMARY KEY CLUSTERED([ID] ASC)
)
然後,我在存儲過程中使用以下查詢來獲取表中所有列的數據類型列表。
SELECT
b.name, c.name as TypeName, b.length, b.isnullable, b.collation, b.xprec, b.xscale
FROM sysobjects a
inner join syscolumns b on a.id = b.id
inner join systypes c on b.xtype = c.xtype and c.name <> 'sysname'
WHERE a.id = object_id(N'[dbo].[Placemarks]')
and OBJECTPROPERTY(a.id, N'IsUserTable') = 1
ORDER BY b.colId
查詢的結果可以看這裏:
我使用在存儲過程中該查詢,需要得到每個列單行我Placemarks
表。我可以用TypeName = geometry或hierarchyid過濾出行。
但我可能會在將來使用幾何數據類型,並希望查詢向前兼容。任何其他想法?