好久好久之前寫過一個視圖作這個事情,如今只是簡單包一層做爲存儲過程。放在這裏備用。code
CREATE PROCEDURE spDocTable @TableName NVARCHAR(128), @OrderByColumnName BIT = 0 AS DECLARE @Columns TABLE ( ColumnName NVARCHAR(128), DataType NVARCHAR(64), CharacterMaxLength INT, IsNullable NVARCHAR(3), ColumnDescription NVARCHAR(MAX), OrdinalPosition INT ) INSERT INTO @Columns SELECT C.Column_Name, C.Data_Type, C.Character_Maximum_Length, C.Is_Nullable, CAST(P.[Value] AS NVARCHAR(MAX)) AS ColumnDescription, C.Ordinal_Position FROM INFORMATION_SCHEMA.Tables T INNER JOIN INFORMATION_SCHEMA.Columns C ON C.Table_Name = T.Table_Name LEFT JOIN Sys.Extended_Properties P ON P.Major_ID = Object_ID(T.Table_Name) AND P.Minor_ID = C.Ordinal_Position AND P.[Name] = 'MS_Description' WHERE T.Table_Type = 'BASE TABLE' AND T.TABLE_NAME = @TableName IF @OrderByColumnName = 1 BEGIN SELECT ROW_NUMBER() OVER (ORDER BY ColumnName) AS ColumnIndex , * FROM @Columns END ELSE BEGIN SELECT ROW_NUMBER() OVER (ORDER BY OrdinalPosition) AS ColumnIndex , * FROM @Columns END