查詢某個表的欄位名,欄位型別,長度及欄位說明,查詢主鍵資訊,查詢自增列資訊的儲存過程
阿新 • • 發佈:2019-01-24
create PROCEDURE [dbo].[ziduan]
/*
function:查詢某個表的欄位名,欄位型別,長度及欄位說明,並asc排序;查詢主鍵資訊;查詢自增列資訊
*/
(
@biaoming nvarchar(50)
)
AS
SET NOCOUNT ON
--獲取欄位名,長度,預設值,欄位說明sql2000可用
--SELECT [name] = a.name, [type_name] = b.name, length = a.prec,[default]=m.text,[description] = isnull(g.[value], ' ') FROM syscolumns a left join systypes b on a.xusertype=b.xusertype left join sysproperties g on a.id=g.id and a.colid=g.smallid left join syscomments m on a.cdefault=m.id where a.id=object_id( @biaoming) order by [name] asc
--sql2005以上可用
SELECT [name] = a.name, [type_name] = b.name, length = a.prec,[default]=m.text,[description] = isnull(g.[value], ' ') FROM syscolumns a left join systypes b on a.xusertype=b.xusertype left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id left join syscomments m on a.cdefault=m.id where a.id=object_id( @biaoming) order by [name] asc
--獲取表的主鍵值
exec sp_pkeys @biaoming
--獲取該表自增列的相關資訊
Select so.name Table_name, --表名字
sc.name Identity_Column_name, --自增欄位名字
ident_current(so.name) curr_value, --自增欄位當前值
ident_incr(so.name) incr_value, --自增欄位增長值
ident_seed(so.name) seed_value --自增欄位種子值
from sysobjects so
Inner Join syscolumns sc
on so.id = sc.id
and columnproperty(sc.id, sc.name, 'IsIdentity') = 1
Where upper(so.name) = upper(@biaoming)
SELECT 索引名稱 = a.name ,
表名 = c.name ,
索引欄位名 = d.name ,
索引欄位位置 = d.colid
FROM sysindexes a
JOIN sysindexkeys b ON a.id = b.id
AND a.indid = b.indid
JOIN sysobjects c ON b.id = c.id
JOIN syscolumns d ON b.id = d.id
AND b.colid = d.colid
WHERE a.indid NOT IN ( 0, 255 )
-- and c.xtype='U' and c.status>0 --查所有使用者表
AND c.name = @biaoming --查指定表
ORDER BY c.name ,
a.name ,
d.name
set nocount off
/*
function:查詢某個表的欄位名,欄位型別,長度及欄位說明,並asc排序;查詢主鍵資訊;查詢自增列資訊
*/
(
@biaoming nvarchar(50)
)
AS
SET NOCOUNT ON
--獲取欄位名,長度,預設值,欄位說明sql2000可用
--SELECT [name] = a.name, [type_name] = b.name, length = a.prec,[default]=m.text,[description] = isnull(g.[value], ' ') FROM syscolumns a left join systypes b on a.xusertype=b.xusertype left join sysproperties g on a.id=g.id and a.colid=g.smallid left join syscomments m on a.cdefault=m.id where a.id=object_id( @biaoming) order by [name] asc
--sql2005以上可用
SELECT [name] = a.name, [type_name] = b.name, length = a.prec,[default]=m.text,[description] = isnull(g.[value], ' ') FROM syscolumns a left join systypes b on a.xusertype=b.xusertype left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id left join syscomments m on a.cdefault=m.id where a.id=object_id( @biaoming) order by [name] asc
--獲取表的主鍵值
exec sp_pkeys @biaoming
--獲取該表自增列的相關資訊
Select so.name Table_name, --表名字
sc.name Identity_Column_name, --自增欄位名字
ident_current(so.name) curr_value, --自增欄位當前值
ident_incr(so.name) incr_value, --自增欄位增長值
ident_seed(so.name) seed_value --自增欄位種子值
from sysobjects so
Inner Join syscolumns sc
on so.id = sc.id
and columnproperty(sc.id, sc.name, 'IsIdentity') = 1
Where upper(so.name) = upper(@biaoming)
SELECT 索引名稱 = a.name ,
表名 = c.name ,
索引欄位名 = d.name ,
索引欄位位置 = d.colid
FROM sysindexes a
JOIN sysindexkeys b ON a.id = b.id
AND a.indid = b.indid
JOIN sysobjects c ON b.id = c.id
JOIN syscolumns d ON b.id = d.id
AND b.colid = d.colid
WHERE a.indid NOT IN ( 0, 255 )
-- and c.xtype='U' and c.status>0 --查所有使用者表
AND c.name = @biaoming --查指定表
ORDER BY c.name ,
a.name ,
d.name
set nocount off