☆用心生活☆-wonder-{改变自己才能让自己过上不一样的日子。为自己加油!}

MSSQL获取指定表的列名信息,描述,数据类型,长度

/*
--作用:根据特定的表名查询出字段,以及描述,数据类型,长度,精度,是否自增,是否为空等信息
--作者:wonder QQ:37036846 QQ群:.NET顶级精英群 ID:124766907
--时间:2011-03-23 11:25
--描述:创建存储过程
--参数:@tableName  表名
*/
CREATE PROC sp_GetListsColumnInfoByTableName(
@tableName nvarchar(255
))
AS

BEGIN


SELECT CASE  WHEN Q.INDID >=1 then '主键' ELSE '' END IS_KEYS,
x.objname
as ColumnName,x.value as
ColumnDescription,
z.name
as DataType,y.max_length as length ,y.precision
,y.scale,y.is_identity,y.is_nullable
FROM

(
SELECT *FROM ::fn_listextendedproperty (NULL,   'user ',   'dbo ',   'table ', @tableName,   'column ',   default)
)
AS
X
INNER JOIN

(
SELECT *FROM
  sys.all_columns
where object_id=(select object_id from sys.all_objects where name=@tableName
)
)
AS Y ON X.objname=
y.Name collate Chinese_PRC_CI_AS
inner join
sys.systypes Z
ON  Z.xusertype=
Y.user_type_id
left join (select *from  sysindexkeys where id=(select object_id from sys.all_objects where name=@tableName)) as
Q
ON Q.colid=
y.COLUMN_ID
order by
y.Column_id
END

测试存储过程:

EXEC sp_GetListsColumnInfoByTableName 'userInfo'

posted @ 2011-03-23 12:34  ☆用心生活☆  阅读(2230)  评论(0编辑  收藏  举报
本作者写的任何文章均属原创,若要转载,请注明出处;若
进行与文章有关的商业行为,本作者保留拥有诉诸法律追究
侵权的任何行为。文章只代表本人某一学习时间段内对某一
技术的说明,不代表具有绝对的正确性,若要学习,请与各
位高手编程人员讨论学习。本文章也不代表自己某一时期某
一公司的任何专著和机密文件。仅仅提供自我学习和他人学
习的文章参考,以及自我知识记录。wanzegui325#163.com