获取表的列信息,包括列名,列数据类型,主键列..

刚写的存储过程,保存一下,^_^


CREATE PROCEDURE dbo.Trans_GetTableColumnsInfo
@TableName varchar(50)
/*
根据传入的表名,获取对应表的列的信息,列名,列数据类型,数据类型长度,列是否是主键列
*/
AS
/*
获取该表的主键列的列名,保存在@ColName中
*/
declare @Sql nvarchar(200)
declare @ColName varchar(50)

set @Sql=N'select @ColName=name from syscolumns where exists(select id,indid from sysindexes wherename=''PK_'+@TableName+''' and syscolumns.id=sysindexes.id and syscolumns.colid=sysindexes.indid)'
exec sp_executesql @Sql,N'@ColName varchar(50) out',@ColName out

/*
获取该表的列信息,列名,列数据类型,列数据类型长度,列是否是主键列
*/
select syscolumns.name as ColName,systypes.name as ColType,syscolumns.length as ColLength,case syscolumns.name when @ColName then 1 else 0 end as IsPkColumn
from syscolumns join sysobjects on syscolumns.id=sysobjects.id join systypes on systypes.xtype=syscolumns.xtype
where sysobjects.name=@TableName
GO

---------------------------------------
简单获取主键列名,可以这样:
sp_pkeys 'youtable'

就可以得到你想要的主鍵字段的值

posted on 2012-04-18 14:44  black263  阅读(371)  评论(0编辑  收藏  举报